Autor Thema: Wasserenthärtungsanlage, welcher Hersteller?  (Gelesen 9801 mal)

Offline alexmetz

  • Full Member
  • ***
  • Beiträge: 172
Antw:Wasserenthärtungsanlage, welcher Hersteller?
« Antwort #30 am: 17 November 2017, 07:54:19 »
Ja.

Ja, ich habe eine BWT AQA life (Duplex) in einem 60er Unterschrank !

Ups, die ist ja noch garnicht in fhem integriert ☺️

geht das überhaupt? Also hat die BWT überhaupt irgendeine ne Möglichkeit sie an Fhem anzubinden und falls ja, wie?
Mein Installateur hat nämlich auch nur BWT im Angebot...:
FHEM auf RaspberryPi 3

Homematic

VU+Ultimo 4k

Offline Jewe

  • Full Member
  • ***
  • Beiträge: 388
Antw:Wasserenthärtungsanlage, welcher Hersteller?
« Antwort #31 am: 30 August 2018, 13:30:42 »
Hallo,

gibt es zur Wasserenthärtungsanlage von Syr Lex10 schon neue Erkenntnisse zur Einbindung in Fhem?

Hat jemand solch eine Anlage mit fhem gekoppelt ?

Jens

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 968
Antw:Wasserenthärtungsanlage, welcher Hersteller?
« Antwort #32 am: 18 September 2018, 07:55:07 »
Hallo,

nach langem Kampf habe ich für mich mit Hilfe der Seiten https://www.msxfaq.de/sonst/iot/syr_lexplus_10.htm und http://www.weimars.net/?p=147#comment-9941 eine Lösung gefunden, die ich hier kurz vorstellen möchte. Da meine Kenntnisse in Sachen apache-Server, php, HTTP, DNS und Co. nur marginal sind, habe ich mir viel zusammen kopiert und auch viel durch probieren gelöst, was vermutlich auch anders/einfacher/besser ginge - für Hinweise bin ich dankbar. Hier nun mein Weg:

Zunächst einmal habe ich auf einem Server auf dem ein apache-Server und pihole laufen. Da dieser sowieso als DNS-Server im Netzwerk fungiert, habe ich dem piHole "erklärt", dass er die beiden von der Syr verwendeten Adressen auf den eigenen Server umleiten soll. Hierfür zunächst dem pihole iene zusätzliche DNS-Liste beibringen:

echo "addn-hosts=/etc/pihole/lan.list" | sudo tee /etc/dnsmasq.d/02-lan.conf
und anschließend die Datei lan.list anlegen

nano /etc/pihole/lan.list
und mit folgendem Inhalt füllen:

<IP eures Servers> syrconnect.consoft.de syrconnect
<IP eures Servers> connect.saocal.pl saocal

Nach einem

sudo pihole restartdns
mit anschließendem Neustart der Syr (Stecker kurz ziehen, da der DNS scheinbar nur beim Start abgefragt wird) redet die Syr nur noch mit eurem Server - dies kann mit

tail -f /var/log/apache2/access.log

überprüft werden - hier sollten nun regelmäßig 404-Einträge von der Syr erscheinen.

Nun brauchen wir einige module vom apache-Server, um die Anfragen umzuleiten (kann sein, dass ich hier zu viel aktiviert habe, aber so funktioniert es zumindest bei mir):

sudo a2enmod rewrite
sudo a2enmod *proxy*
sudo service apache2 restart

Nun können wir die Anfrage von der Syr auf zwei eigene php-Scripte umleiten (ich gehe hier davon aus, dass sich das apache-Hauptverzeichnis in /var/www/html befindet - muss ggf. angepasst werden). Zunächst legen wir ein Verzeichnis für die Syr an:

mkdir /var/www/html/Syr
In diesem Verzeichnis legen wir zwei php-Dateien mit dem folgenden Inhalt an:

nano /var/www/html/Syr/GetBasicCommands.php
HTTP/1.1 200 OK
Date: Thu, 13 Sep 2018 20:06:29 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 676
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: _xsrf=2|e6f99dd9|272e08c82ff1946ce45cf97240d0db2a|1536869189; Path=/
Server: TornadoServer/4.4

<sc version="1.0"><d><c n="getSRN" /><c n="getSTA" /><c n="getMAC" /><c n="getDEN" /><c n="getDN1" /><c n="getDN2" /><c n="getDEV" /><c n="getSCR" /><c n="getVER" /><c n="getFIR" /><c n="getLGO" /><c n="getPRS" /><c n="getPST" /><c n="getWHU" /><c n="getOWH" /><c n="getIWH" /><c n="getFLO" /><c n="getRES" /><c n="getSCR" /><c n="getVS1" /><c n="getVS2" /><c n="getVS3" /><c n="getCS1" /><c n="getCS2" /><c n="getCS3" /><c n="getSS1" /><c n="getSS2" /><c n="getSS3" /><c n="getRG1" /><c n="getRG2" /><c n="getRG3" /><c n="getPA1" /><c n="getPA2" /><c n="getPA3" /><c n="getLAN" /><c n="getCYN" /><c n="getCYT" /><c n="getRTI" /><c n="getDAT" /><c n="setRCE" v="0" /></d></sc>

(Ich vermute, dass das HTTP-gedöns am Anfang falsch ist, aber da es so funktioniert, habe ich es erstmal dabei belassen)

nano /var/www/html/Syr/GetAllCommands.php
<?php 
  
echo"";
  
$xml=$_POST['xml'];

  
$data "";
  
$json "";
  
$xmlparser = new SimpleXMLElement($xml);
  for(
$i=0;$i$xmlparser->d->c->count();$i++)
  
$data.= "\"".$xmlparser->d->c[$i]['n']."\":\"".$xmlparser->d->c[$i]['v']."\",\n";

  
$json "{\n\"LEX\":{\n";
  
$json $json.$data;
  
$json $json."\"\":\"\"";
  
$json $json."\n}\n}";

  
$filehandler=fopen("lex.json","w");
  
fwrite($filehandler,$json);
  
fclose($filehandler);

  
$filehandler=fopen("lex.xml","w");
  
fwrite($filehandler,$xml);
  
fclose($filehandler);
?>


(Unter Umständen müssen noch php bzw. zusätzliche php-Module (xml?) installiert werden)

Nun ändern wir noch den Besitzer der neuen Dateien:

chown -R www-data:www-data /var/www/html/Syr
Jetzt müssen wir noch die Anfragen der Syr auf die neuen Dateien umleiten. Hierfür legen wir eine .htaccess-Datei an:

nano /var/www/html/.htaccess
mit folgendem Inhalt:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} GetBasicCommands$ [NC]
RewriteRule ^(.*)$ http://<IP eures Servers>/Syr/GetBasicCommands.php [P]
RewriteCond %{REQUEST_URI} GetAllCommands$ [NC]
RewriteRule ^(.*)$ http://<IP eures Servers>/Syr/GetAllCommands.php [P]

So, nun werden bei jeder Anfrage von der Syr die Dateien lex.json und lex.xml im Verzeichnis /var/www/html/Syr/ angelegt bzw. aktualisiert. Jetzt muss nur noch die Datei lex.json im FHEM mittels HTTPMOD ausgelsen und zur Anzeige gebracht werden:

defmod SyrLexPlus HTTPMOD http://<IP eures Servers>/Syr/lex.json 60
attr SyrLexPlus userattr reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading05OExpr reading06JSON reading06Name reading07JSON reading07Name reading08JSON reading08Name reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name reading12JSON reading12Name reading13JSON reading13Name reading14JSON reading14Name reading15JSON reading15Name reading16JSON reading16Name reading17JSON reading17Name reading18JSON reading18Name reading19JSON reading19Name reading20JSON reading20Name reading21JSON reading21Name reading22JSON reading22Name reading23JSON reading23Name reading24JSON reading24Name reading25JSON reading25Name reading26JSON reading26Name reading27JSON reading27Name reading28JSON reading28Name reading29JSON reading29Name reading30JSON reading30Name reading31JSON reading31Name reading32JSON reading32Name reading33JSON reading33Name reading34JSON reading34Name reading35JSON reading35Name reading36JSON reading36Name reading37JSON reading37Name reading38JSON reading38Name reading39JSON reading39Name
attr SyrLexPlus DbLogInclude .*
attr SyrLexPlus enableControlSet 1
attr SyrLexPlus event-on-change-reading Restkapazitaet,Rohwasserhaerte,Salzvorrat,Wasserdruck,Weichwasserhaerte,get.*
attr SyrLexPlus reading01JSON LEX_getSRN
attr SyrLexPlus reading01Name Seriennummer
attr SyrLexPlus reading02JSON LEX_getVER
attr SyrLexPlus reading02Name Firmware
attr SyrLexPlus reading03JSON LEX_getIWH
attr SyrLexPlus reading03Name Rohwasserhaerte
attr SyrLexPlus reading04JSON LEX_getOWH
attr SyrLexPlus reading04Name Weichwasserhaerte
attr SyrLexPlus reading05JSON LEX_getPRS
attr SyrLexPlus reading05Name Wasserdruck
attr SyrLexPlus reading05OExpr $val / 10
attr SyrLexPlus reading06JSON LEX_getSS1
attr SyrLexPlus reading06Name Salzvorrat
attr SyrLexPlus reading07JSON LEX_getRES
attr SyrLexPlus reading07Name Restkapazitaet
attr SyrLexPlus reading08JSON LEX_getSTA
attr SyrLexPlus reading08Name getSTA
attr SyrLexPlus reading09JSON LEX_getMAC
attr SyrLexPlus reading09Name MAC_Adresse
attr SyrLexPlus reading10JSON LEX_getDEN
attr SyrLexPlus reading10Name getDEN
attr SyrLexPlus reading11JSON LEX_getDN1
attr SyrLexPlus reading11Name getDN1
attr SyrLexPlus reading12JSON LEX_getDN2
attr SyrLexPlus reading12Name getDN2
attr SyrLexPlus reading13JSON LEX_getDEV
attr SyrLexPlus reading13Name getDEV
attr SyrLexPlus reading14JSON LEX_getSCR
attr SyrLexPlus reading14Name getSCR
attr SyrLexPlus reading15JSON LEX_getFIR
attr SyrLexPlus reading15Name getFIR
attr SyrLexPlus reading16JSON LEX_getLGO
attr SyrLexPlus reading16Name getLGO
attr SyrLexPlus reading17JSON LEX_getPST
attr SyrLexPlus reading17Name getPST
attr SyrLexPlus reading18JSON LEX_getWHU
attr SyrLexPlus reading18Name getWHU
attr SyrLexPlus reading19JSON LEX_getFLO
attr SyrLexPlus reading19Name getFLO
attr SyrLexPlus reading20JSON LEX_getSCR
attr SyrLexPlus reading20Name getSCR
attr SyrLexPlus reading21JSON LEX_getVS1
attr SyrLexPlus reading21Name getVS1
attr SyrLexPlus reading22JSON LEX_getVS2
attr SyrLexPlus reading22Name getVS2
attr SyrLexPlus reading23JSON LEX_getVS3
attr SyrLexPlus reading23Name getVS3
attr SyrLexPlus reading24JSON LEX_getCS1
attr SyrLexPlus reading24Name getCS1
attr SyrLexPlus reading25JSON LEX_getCS2
attr SyrLexPlus reading25Name getCS2
attr SyrLexPlus reading26JSON LEX_getCS3
attr SyrLexPlus reading26Name getCS3
attr SyrLexPlus reading27JSON LEX_getSS2
attr SyrLexPlus reading27Name getSS2
attr SyrLexPlus reading28JSON LEX_getSS3
attr SyrLexPlus reading28Name getSS3
attr SyrLexPlus reading29JSON LEX_getRG1
attr SyrLexPlus reading29Name getRG1
attr SyrLexPlus reading30JSON LEX_getRG2
attr SyrLexPlus reading30Name getRG2
attr SyrLexPlus reading31JSON LEX_getRG3
attr SyrLexPlus reading31Name getRG3
attr SyrLexPlus reading32JSON LEX_getPA1
attr SyrLexPlus reading32Name getPA1
attr SyrLexPlus reading33JSON LEX_getPA2
attr SyrLexPlus reading33Name getPA2
attr SyrLexPlus reading34JSON LEX_getPA3
attr SyrLexPlus reading34Name getPA3
attr SyrLexPlus reading35JSON LEX_getLAN
attr SyrLexPlus reading35Name getLAN
attr SyrLexPlus reading36JSON LEX_getCYN
attr SyrLexPlus reading36Name getCYN
attr SyrLexPlus reading37JSON LEX_getCYT
attr SyrLexPlus reading37Name getCYT
attr SyrLexPlus reading38JSON LEX_getRTI
attr SyrLexPlus reading38Name getRTI
attr SyrLexPlus reading39JSON LEX_getDAT
attr SyrLexPlus reading39Name Datum

So, das sollte es gewesen sein. Ich habe zunächst mal die Einträge, die zugeordnet werden konnten mit Namen versehen und alle anderen so belassen, wie sie von der Syr kommen - vielleicht können die auch irgendwann sinnvoll zugeordnet werden.

Viel Erfolg damit
Ronny
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal