Fröling Heizungskessel P4, S4: Werte und Fehlermeldung auslesen

Begonnen von SvenJust, 23 Januar 2017, 16:06:06

Vorheriges Thema - Nächstes Thema

SvenJust

In diesem Thread wird die Übertragung von Werten und Fehlermeldungen aus der Fröling Heizungskesselsteuerung Lambdatronic S 3200 beschrieben. Die Steuerung wird bei Fröling Kesseln P4 und S4 eingesetzt.

In dem Vorgänger-Thread https://forum.fhem.de/index.php/topic,30088.0.html fehlte die Übertragung der Fehlermeldungen.


Übersicht Architektur
Im Folgenden wird von zwei Rechnern ausgegangen, einen für das Auslesen der Heizung und einen fhem Rechner mit dem MQTT-Broker.

Gerät:      Frölingkessel <-- RS232 --> Heizungsrechner <-- (W)-LAN --> fhem Server
Beispiel IP:                            192.168.20.228                  192.168.20.240
Programme:                              /usr/local/bin/p4               fhem
                                        p4tomqtt.pl                     MQTT Broker
                                                                        MQTT-Devices
                                                                        Notifiy


Der Heizungsrechner und der fhem-Rechner können auch ein Rechner sein.


Vorbereitung
Für das Auslesen der Werte aus dem Frölingkessel wird das Kommandozeilentool p4 benötigt. Dieses muss auf dem Heizungsrechner installiert werden. Die Anleitung und den Code gibt es im Holzheizer-Forum. (Erläuterung im Holzheizer-Forum https://www.holzheizer-forum.de/index.php?thread/50090-announce-p4d-visualisierung-und-einstellung-der-s-3200-via-com1/&pageNo=1, Sourcen: https://github.com/horchi/linux-p4d/)

Auf dem fhem-Server wird ein MQTT-Broker benötigt. Ich verwende mosquitto. Die aktuelle Version wird mit dem Folgenden installiert.
sudo apt-get update
sudo apt-get upgrade

# MQTT Broker auf dem Repo installieren:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
# oder für jessie
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients



Auf dem fhem-Server UND dem Heizungsrechner werden zwei Perl-Libs benötigt. Diese bitte jeweils mit
sudo cpan -i Net:MQTT:Simple
sudo cpan -i Net:MQTT:Constants

installieren.


Installation Skript auf dem Heizungsrechner
Das unten anhängende Skript bitte unter /usr/local/bin/p4tomqtt.pl auf den Heizungsrechner kopieren. Anschließend bitte die Rechte auf ausführbar setzen chmod 777 /usr/local/bin/p4tomqtt.pl. In dem Skript muss der USB-Adapter und die IP-Addresse des MQTT-Servers eingetragen werden.
####### In der folgenden Zeile den USB-Adapter eintragen
my $usbdev="/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0";
####### In der folgenden Zeile die IP-Adresse des MQTT Servers eintragen
my $mqttServerIP = "192.168.20.240";


Bitte das Skript mit dem Aufruf von /usr/local/bin/p4tomqtt.pl testen. Die Ausgabe sollte mit # /usr/local/bin/p4tomqtt.pl                 
DEBUG: state
DEBUG: the result is:
Version: 50.04.05.12
Time: Monday, 23. Jan. 2017 14:22:33
2 - Automatik
13 - Abstellen Warten2
DEBUG: returncode was: 0
SWversion: 50.04.05.12, Zeit: Monday, 23. Jan. 2017 14:22:33, Status: 13 - Abstellen Warten2, Modus: 2 - Automatik

DEBUG: Type: ST, ID: 0, Name: Softwareversion, divider: NODEF, unit: NODEF
Topic: d8/p4/ST000-Softwareversion, value: 50.04.05.12

DEBUG: Type: ST, ID: 1, Name: Datum Uhrzeit der Heizung, divider: NODEF, unit: NODEF
Topic: d8/p4/ST001-DatumUhrzeitderHeizung, value: Monday, 23. Jan. 2017 14:22:33
beginnen. Es werden Werte vom Kessel ausgelesen. Abhängig von der Software des Kessel können unterschiedliche Werte ausgelesen werden.

Beginnt die Ausgabe mit DEBUG: state
DEBUG: the result is:
Error: Opening '/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0' failed, errno was (2) 'No such file or directory'
so kann das USB Device nicht geöffnet werden.


Testen der Übertragung auf dem fhem-Rechner
Auf dem fhem-Rechner eine Console öffnen und mosquitto_sub -h localhost -t "d8/p4/+" aufrufen. Danach auf dem Heizungsrechner das Skript starten. Die Ausgabe sollte ähnlich aussehen:
mosquitto_sub -h localhost -t "d8/p4/+" 
ST000-Softwareversion|50.04.05.12
ST001-DatumUhrzeitderHeizung|Monday, 23. Jan. 2017 15:09:52
ST002-Heizungsstatus|3 - Heizen
ST003-Betriebsmodus|2 - Automatik
VA000-Kesseltemperatur|70.5 °C
VA001-Abgastemperatur|164 °C
VA003-Restsauerstoffgehalt|8.19 %
VA004-Aussentemperatur|-2 °C
VA007-Saugzugdrehzahl|1396 U/min
DO010-Sonde1oeffnen|0
DO011-Sonde2oeffnen|1
DO012-Sonde3oeffnen|0
VA012-LuftgeschwindigkeitinderAnsaugoeffnung|1.65 m/s
DO015-PelletsSaugturbine|0
VA021-Vorlauf-Isttemperatur|51.5 °C
VA022-Vorlauf-Solltemperatur|52.5 °C
VA025-Vorlauf-Isttemperatur|52 °C
VA026-Vorlauf-Solltemperatur|52.5 °C
VA093-Boilertemperaturoben|58.5 °C
VA098-Betriebsstunden|16796 h
VA113-FuellstandimPelletsbehaelter|97.19 %
VA118-Puffertemperaturoben|63 °C
VA120-Puffertemperaturunten|50.5 °C
VA140-PufferpumpenAnsteuerung|55 %
VA144-BoilerpumpeAnsteuerung|0 %
VA180-BetriebsstundenZuendung|1527 h
VA213-StundenseitletzterWartung|2729 h
VA221-StundenimHeizen|11553 h
VA273-Resetierbarerkg-Zaehler:|606 kg
VA274-Resetierbarert-Zaehler:|1 t
XX001-ResetierbarerVerbrauchszaehler|1606 kg
VA279-VerbleibendeHeizstundenbiszurAscheentleerenWarnung|434 h
VA114-AnzahlderBrennerstarts|10076


Wird keine Ausgabe angezeigt, dann den Fehler suchen, evtl. ist die IP-Adresse im Skript falsch ($mqttServerIP).


Sub in 99_myUtils.pm hinzufügen
Wird die Ausgabe angezeigt, so werden im nächsten Schritt die Einstellungen in fhem gemacht.
In der fhem-Datei 99_myUtils.pm muss die folgende Sub hinzugefügt werden: sub MqttGetReadingsFromMessage($$){
   my($device, $event) = @_;
   Log 3, $device;
   Log 3, $event;
   if (substr($event, 0, 12) eq "MqttRawMsg: ") {
       my $dotrigger = 1;
       my $RawMessages = substr($event, 12);
       my $hash = $defs{$device};
       my $readingName ="";
       my $readingValue ="";
       # Log 1, "$RawMessages";
       my @msg = split("\n",$RawMessages);
       my $e;
       readingsBeginUpdate($hash);
       foreach $e (@msg){
           ($readingName,$readingValue)=split(/\|/,$e);
           # Log 1, $e;
           # Log 1, $readingName;
           # Log 1, $readingValue;
           readingsBulkUpdate($hash, $readingName, $readingValue);
       }
       readingsEndUpdate($hash, $dotrigger);
   }
}
fhem muss anschließend neu gestartet werden.


Device in fhem hinzufügen
In fhem muss die Verbindung zum MQTT-Broker mosquitto definiert werden. Dies geschieht mit:
define mqttbroker MQTT 127.0.0.1:1883 Das fhem Device mqttboker muss bei den Readings state auf opened stehen.

Dann können die zwei MQTT-Devices in fhem definiert werden:
define heating.values MQTT_DEVICE
attr heating.values autoSubscribeReadings d8/p4/+

define heating.errors MQTT_DEVICE
attr heating.errors autoSubscribeReadings d8/p4-error/+


Jetzt müssen auf dem fhem-Rechner noch zwei Notify angelegt werden, damit die Sub MqttGetReadingsFromMessage aufgerufen wird:
define nt.heating.values notify heating.values.* {MqttGetReadingsFromMessage($NAME,$EVENT)}
define nt.heating.errors notify heating.errors.* {MqttGetReadingsFromMessage($NAME,$EVENT)}


Wenn jetzt auf dem Heizungsrechner das Skript p4tomqtt.pl aufgerufen wird, sollten nach kurzer Zeit die Readings in den beiden Devices heating.values und heating.errors gefüllt werden.


Cronjob aus dem Heizungsrechner
Damit das Skript regelmäßig aufgerufen wird, sollte auf dem Heizungsrechner ein Cronjob /etc/cron.d/p4tomqtt angelegt werden:
PATH=/sbin:/usr/sbin:/bin:/usr/bin

# start p4tomqtt every two minutes
*/2 * * * * root /usr/local/bin/p4tomqtt.pl >> /dev/null 2>&1


/edit: notify nt.heating.errors korrigiert.
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Tropaion

Hi

ich habe das Script installiert und im Grunde funktioniert es auch, aber zwei Fragen habe ich.

Bei mir kommt die Fehlermeldung im Script, wieso?
ZitatDEBUG: Type: XX, ID: 1, Name:
Resetierbarer Verbrauchszähler, divider: , unit:
kg
DEBUG: getVA
DEBUG: the result is: Getting value failed, error -1992
DEBUG: returncode was: 0
DEBUG: getVA
DEBUG: the result is: Getting value failed, error -1992
DEBUG: returncode was: 0
Argument "error" isn't numeric in multiplication (*) at p4tomqtt.pl line 244.
Argument "error" isn't numeric in addition (+) at p4tomqtt.pl line 244.
Topic: d8/p4/XX001-ResetierbarerVerbrauchszaehler,
value: 0 kg

Und, ist es normal das die Error-Meldung in einer "Wurst" kommen?
Siehe Bild.

Danke und Mfg,
Tropaion

SvenJust

Hallo Tropaion!

Zitat von: Tropaion am 24 Januar 2017, 09:28:15
Bei mir kommt die Fehlermeldung im Script, wieso?

Du nutzt eine ältere Softwareversion für den Kessel, diese kennt die Werte für die Pelletverbrauch nicht. Am einfachsten ist es wenn Du im Skript die Zeile 395 löschst:
MakeMqttMessage("XX","1","Resetierbarer Verbrauchszähler","","kg");
Ebenso sollte die Zeilen 393 und 394 "Resetierbarer kg-Zähler" und "Resetierbarer t-Zähler:" keine Werte liefern, die kannst Du auch löschen.

Es können in dem Bereich auch beliebige andere Werte vom Kessel abgefragt werden, je nach Konfiguration des Heizungskessels und der Heizungsanlage. Ich frage mit dem Skript eine Anlage mit einem Puffer, zwei Heiz- und Warmwasserkreisläufen, sowie drei Ansaugsonden für die Pellets ab. Eventuell ist Deine Anlage anders aufgebaut.
MakeMqttMessage(<type>,<id>,<name>,<divider>,<unit>);
Die Parameter für die Abfrage der Werte <type>, <id> können aus dem Webinterface, Setup, Aufzeichnung abgelesen werden, siehe beiliegendes Bild. Der Wert für Name kann frei vergeben werden. <divider> wird oft bei Temperaturen benötigt, um 0,5° Schritte zu kodieren oder auch zehntel Prozent wie bei dem Restsauerstoffgehalt. Der Wert für <unit> kann wiederrum aus besagten Webinterface abgelesen werden.

Zitat von: Tropaion am 24 Januar 2017, 09:28:15
Und, ist es normal das die Error-Meldung in einer "Wurst" kommen?
Die "Wurst" ;D ist der String, der vom Heizungsrechner in einem Rutsch zum fhem-Rechner übertragen wird. Bei Dir ist das Notify nt.heating.errors noch falsch (war ein Fehler in meinem Post, ist dort jetzt korrigiert). define nt.heating.errors notify heating.errors.* {MqttGetReadingsFromMessage($NAME,$EVENT)}

Nach der Korrektur des notifys sollte die "Wurst" auf einzelne Readings aufgeteilt sein.

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Tropaion

Die Values bekomme ich eh einzeln Aufgelistet, ohne Notify, nur die Fehlermeldungen nicht.
Das Notify funktioniert auch nicht.

Mfg,
Tropaion

SvenJust

Zitat von: Tropaion am 24 Januar 2017, 11:15:23
Die Values bekomme ich eh einzeln Aufgelistet, ohne Notify, nur die Fehlermeldungen nicht.
Nein, die Readings sind alt, sie haben alle einen Zeitstempel von 9:14, nur das Reading MqttRawMsg hat einen aktuellen Zeitstempel 11:31. Dieses Reading wird auch nicht auf die einzelnen Readings aufgeteilt.

Zitat von: Tropaion am 24 Januar 2017, 11:15:23
Das Notify funktioniert auch nicht.
Hast Du die Sub MqttGetReadingsFromMessage in 99_myUtils.pm hinzugefügt und fhem neugestartet? Wenn ja, setzte den Loglevel global auf 3 (attr global verbose 3) und rufe die Sub von Notify in fhem ( {MqttGetReadingsFromMessage("Froeling_Values","MqttRawMsg")} ) direkt auf. In der fhem Logdatei solltest Du etwas von der Sub finden (2017.01.24 11:32:06 3: MqttRawMsg: ST000-Softwareversion|50.04.05.12) Loglevel wieder zurücksetzen (attr global verbose 1) Wenn das Notify nicht aufgerufen wird, was steht im Event monitor?

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Tropaion

Ok, FHEM-Neustart hat das Problem gelöst  ;).
Danke für das tolle Script!
Würde es dich stören wenn ich die Anleitung ins Wiki schreibe?

Eine Frage hätte ich noch:
Weißt du, wie man das in FHEM einbindet, das man eine Liste der z.B.: 10 letzten Fehler hat?

Danke und Mfg,
Tropaion

SvenJust

Zitat von: Tropaion am 24 Januar 2017, 13:27:35
Ok, FHEM-Neustart hat das Problem gelöst  ;).
Danke für das tolle Script!
Schön, dass es bei Dir auch läuft. Bei mir läuft es seit mehreren Jahren fehlerfrei. Die Wartungstechniker von Fröling sind jedesmal äußerst überrascht, wenn ich Ihnen die detaillierten Temperaturverläufe der Heiz- und Warmwasserkreise zeigen kann. Klemmende Mischer und ähnliches konnte ich mit den Daten immer sicher diagnostizieren. Auch die Fehlermeldungen des vergangenen Wartungszeitraumes habe ich bei den Wartungsterminen parat. :)

Zitat von: Tropaion am 24 Januar 2017, 13:27:35
Würde es dich stören wenn ich die Anleitung ins Wiki schreibe?
Darfst Du gerne machen...

Zitat von: Tropaion am 24 Januar 2017, 13:27:35
Weißt du, wie man das in FHEM einbindet, das man eine Liste der z.B.: 10 letzten Fehler hat?
Dafür habe ich keine richtige Vorlage, ich liste die letzten Meldungen immer in FTUI auf. Da die meisten Fehler aber aus drei Meldungen (gekommen, gegangen, quittiert) bestehen, müsste man ggfs  die Meldungen mit ein wenig Logik zusammenfassen. Mir reicht es aber in der einfachen Art, siehe auch Bild.
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Tropaion

#7
ZitatDarfst Du gerne machen...
Ok :)

ZitatDafür habe ich keine richtige Vorlage, ich liste die letzten Meldungen immer in FTUI auf. Da die meisten Fehler aber aus drei Meldungen (gekommen, gegangen, quittiert) bestehen, müsste man ggfs  die Meldungen mit ein wenig Logik zusammenfassen. Mir reicht es aber in der einfachen Art, siehe auch Bild.

Ist es irgendwie möglich das ich 10x defines habe wo jeweils immer der letzte Fehler drinnen steht?
Also z.B
Froeling_Error_1 -> letzter Fehler
Froeling_Error_2 -> vorletzter Fehler
....

Geht das irgendwie?
Dann könnte ich die Fehler schön in die Visu einbauen.

EDIT: Ich hatte gerade eine Idee wie es gehen könnte.
Ich habe gerade bemerkt, das die Fehler eh nummeriert sind, das könnte hilfreich sein, werde das probieren

Danke und Mfg,
Tropaion

Tropaion

Ja, cool, es funktioniert so wie ich es wollte.
Habe es jetzt so eingestellt, das mir die letzten 6 Fehler angezeigt werden.

Mfg,
Tropaion

MeinHerzBrennt


hoppel118

#10
Hallo Leute,

ich habe einen 2017 beschafften Fröling Scheitholz-Vergaserkessel S1 20kW mit S3200 Steuerung.

Wie stehen meine Chancen das an mein FHEM angebunden zu bekommen?

Habt ihr das eigentlich alle mit einem Extra für diesen Zweck vorgesehenen Raspberry angebunden? Ich würde das am liebsten alles auf meinem Hauptserver laufen lassen. Mit seriellen Schnittstellen habe ich aber bisher noch gar keine Erfahrungen. Gibt es gute/brauchbare Module um eine serielle Schnittstelle in ein Wifi- oder Ethernet-Signal zu wandeln, um dieses dann in FHEM irgendwie direkt ansprechen zu können? Braucht man dann trotzdem den MQTT-Server? Hat hier jemand Erfahrungen damit?

Danke euch und viele Grüße Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

SvenJust

Hallo Hoppel!
Zitat von: hoppel118 am 13 April 2020, 13:13:11
ich habe einen 2017 beschafften Fröling Scheitholz-Vergaserkessel S1 20kW mit S3200 Steuerung.

Wie stehen meine Chancen das an mein FHEM angebunden zu bekommen?
Sehr gut, die S3200 hat die passende COM Schnittstelle.

Zitat von: hoppel118 am 13 April 2020, 13:13:11
Habt ihr das eigentlich alle mit einem Extra für diesen Zweck vorgesehenen Raspberry angebunden? Ich würde das am liebsten alles auf meinem Hauptserver laufen lassen. Mit seriellen Schnittstellen habe ich aber bisher noch gar keine Erfahrungen. Gibt es gute/brauchbare Module um eine serielle Schnittstelle in ein Wifi- oder Ethernet-Signal zu wandeln, um dieses dann in FHEM irgendwie direkt ansprechen zu können? Braucht man dann trotzdem den MQTT-Server? Hat hier jemand Erfahrungen damit?
Du kannst alles auch auf Deinem Hauptserver laufen lassen, wenn eine Kabelverbindung (Seriell oder Ethernet [https://wiki.fhem.de/wiki/Serial_TTL_to_Ethernet_Module]) von der Heizung zum Hauptserver reicht. Dann kannst Du auf den Raspberry verzichten. Eine Umsetzung von Seriell auf Wifi ist auch möglich, dann hängt es aber von der Wifi Verbindung ab, ob dies stabil läuft. Den MQTT Broker benötigst Du trotzdem, um die Werte in Fhem einzulesen. Fhem enthält mittlerweile auch einen MQTT Broker, den ich nicht getestet habe, der aber prinzipiell auch funktionieren sollte.

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

hoppel118

#12
Moin Sven,

danke für die Rückmeldung.

Das serielle Kabel reicht leider nicht bis zu meinem Hauptserver. Mit Ethernet würde ich da aber schon klarkommen. Ich war parallel auch in horchi's Thread im Holzheizer Forum unterwegs. Ich hatte mich nun gestern Abend eigentlich dafür entschieden, das Projekt erstmal mit einem usb2serial Kabel und einem eigenen RPi umzusetzen. Beides ist bereits bestellt. Erst wenn ich die Funktionsweise dann verstanden habe, wollte ich mir anschauen, wie ich das ohne RPi hinbekomme.

Jetzt hast du mich allerdings etwas verunsichert. Eigentlich würde ich diese Lösung ohne extra RPi bevorzugen. Hm... ;)

Das folgende Gerät müsste den Informationen nach das richtige Gerät sein:

https://www.usriot.com/products/rs232-to-ethernet-converter.html

Und der FHEM MQTT Server ist hier beschrieben:

https://wiki.fhem.de/wiki/MQTT

Richtig?

Siehst du größere Schwierigkeiten auf mich zu kommen, wenn ich es direkt ohne RPi versuche? Ich behaupte, dass ich Ahnung von Linux habe und mittlerweile auch schon wirklich viel mit FHEM umgesetzt. Funktionieren die p4d Scripte, so wie sie sind mit der Lösung ohne RPi oder muss da dann irgendwas angepasst werden?

Kann ich denn im p4d Dämon irgendwo hinterlegen, dass er das Gerät nicht über ein usb2serial Interface, sondern über ein eth2serial Interface erreicht? Was müsste ich dann nachfolgend statt des usb Adapters angeben?

Zitat von: SvenJust am 23 Januar 2017, 16:06:06
In dem Skript muss der USB-Adapter und die IP-Addresse des MQTT-Servers eingetragen werden.
####### In der folgenden Zeile den USB-Adapter eintragen
my $usbdev="/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0";
####### In der folgenden Zeile die IP-Adresse des MQTT Servers eintragen
my $mqttServerIP = "192.168.20.240";


Amazon verzögert die Lieferung des RPi und des Kabels sowieso noch bis zum 21.04. wegen Priorisierung anderer Güter. Ich könnte noch stornieren und diese Lösung bestellen. ;)

Danke dir und Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

SvenJust

Hallo Hoppel!

Zitat von: hoppel118 am 14 April 2020, 13:39:41
Jetzt hast du mich allerdings etwas verunsichert. Eigentlich würde ich diese Lösung ohne extra RPi bevorzugen. Hm... ;)
Es wird mit und ohne Raspberry funktionieren. Das "Kochbuch" hatte ich unter Verwendung eines Raspberry geschrieben, da ich über WLAN zum Hauptrechner muss und etwa 50m Luft zwischen Heizung und Server habe. Das mqtt-Protokoll macht sich auf WLAN gut, welches nicht immer stabil ist. Wenn Du aber das serielle Signal per Kabel zum Server bekommst, sollte es ebenso mittels des Seriell-Ethernet-Adapters funktionieren.

Als ich meine Lösung entwickelt habe, hatte horchi noch KEINE mqtt-Schnittstelle integriert. Wenn Du Dir seine aktuelle Version anschaust, kannst Du dort auch direkt konfigurieren, dass Werte von p4d nach mqtt geschrieben werden. Die kann fhem direkt einlesen. Das macht mein oben gezeigtes Skript komplett überflüssig. Ich habe es bisher bei mir aber mit meinem Skript am Laufen, einfach weil es läuft und stabil ist.


Zitat von: hoppel118 am 14 April 2020, 13:39:41
Das folgende Gerät müsste den Informationen nach das richtige Gerät sein:

https://www.usriot.com/products/rs232-to-ethernet-converter.html
Ja, sieht gut aus. UART Schnittstelle kann in Linux als Device eingebunden werden.


Zitat von: hoppel118 am 14 April 2020, 13:39:41
Und der FHEM MQTT Server ist hier beschrieben:

https://wiki.fhem.de/wiki/MQTT

Richtig?
Ja.

Zitat von: hoppel118 am 14 April 2020, 13:39:41
Siehst du größere Schwierigkeiten auf mich zu kommen, wenn ich es direkt ohne RPi versuche? Ich behaupte, dass ich Ahnung von Linux habe und mittlerweile auch schon wirklich viel mit FHEM umgesetzt. Funktionieren die p4d Scripte, so wie sie sind mit der Lösung ohne RPi oder muss da dann irgendwas angepasst werden?
Sollte funktionieren, bei mir laufen die p4d Scripte auf einen Banana Pi. Du brauchst eine Datenbank auf dem System, mysql oder mariadb, wenn ich richtig erinnere.

Zitat von: hoppel118 am 14 April 2020, 13:39:41
Kann ich denn im p4d Dämon irgendwo hinterlegen, dass er das Gerät nicht über ein usb2serial Interface, sondern über ein eth2serial Interface erreicht? Was müsste ich dann nachfolgend statt des usb Adapters angeben?
uart://<ip des TCP-TTL-Moduls>:<eingestellter Port> siehe https://wiki.fhem.de/wiki/Serial_TTL_to_Ethernet_Module

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

hoppel118

Moin Sven,

danke erstmal für die ausführliche Antwort. Ich denke, hier habe ich noch Verstänisprobleme:

Zitat von: SvenJust am 14 April 2020, 19:20:58
uart://<ip des TCP-TTL-Moduls>:<eingestellter Port> siehe https://wiki.fhem.de/wiki/Serial_TTL_to_Ethernet_Module

Hier wird beschrieben, wie ich das Interface in FHEM einbinde. Aber wie kann ich dann mit horchi's Software darauf zugreifen? Müsste ich nicht wie folgt vorgehen:

Schritt 1 - ohne FHEM
• eth2serial Interface in mein Netzwerk einbinden und Interface einrichten
• eth2serial Interface auf der Linux Command Line meines Hauptservers einbinden
• horchi's Software (p4d, mysql, apache, etc.) auf meinem Hauptserver installieren
• horchi's Software so konfigurieren, dass der Zugriff auf das eth2serial Interface besteht

-> an diesem Punkt kann ich horchi's Software vollständig (ohne FHEM) nutzen.

Schritt 2 - mit FHEM

• FHEM Modul MQTT2-Server einrichten
• horchi's Software so konfigurieren, dass mit dem MQTT2-Server kommuniziert wird
• In FHEM das MQTT-Device anlegen, FileLog, SVG-Plots, etc. einrichten

Wo liegt mein Denkfehler?

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi