FHEM Modul (70_HPSU.pm) ROTEX HPSU compact <--> ELM327

Begonnen von ahermann86, 19 Dezember 2019, 21:14:24

Vorheriges Thema - Nächstes Thema

cb187

Hi Axel,
Ich weiss das du viel mit fhem machst aber vielleicht hättest du ja mal Lust dich mehr mit iobroker auseinander zusetzen und da die Rotex zuintegrieren.Es werden wohl immer mehr die IO verwenden, und deshalb dachte ich frag dich mal.

ahermann86

Hallo cb187,

ich möchte nicht angeben aber ich könnte das bestimmt für IO umsetzen. Ich frage mich eher, warum soll ich etwas wegwerfen, was zuverlässig funktioniert?
Welche Platform man dafür benutzt ist jedem selbst überlassen. Ich habe mit FHEM angefangen und sehe für mich persönlich keine Schwächen. Klar wäre es schön, wenn man eine optisch modernere GUI mit schönen Kurven hat... aber einen Mehrwert hat das für mich leider nicht.

Die Lösung für dich ist doch ganz einfach - lasse FHEM mit dem Modul nebenher laufen und verbinde FHEM mit IO über den zugehörigen Adapter. FHEM ist so "lightweight", dass selbst der kleinste Raspi das locker (sogar nebenher) wegsteckt.

Gruß
Axel

cb187

Hi Axel,
Natürlich habe ich fhem auf meinem Proxmoxserver nebenher laufen, frisst auch kein Brot🤣.
Ich versuche immer das ich ein system einsetze.Hätte ja sein können das du vielleicht auch mal umschwenken willst auf iobroker.😁.
Eine Frage hätte ich noch, hab ja fhem mit io verbunden da werden die Datenpunkte als Text angelegt kommt das von fhem oder von deinem modul?

Maxman83

#243
Hallo,
ich bekomme leider keine Verbindung zu meiner HPSU Compact 508
Folgendes wurde gemacht:
Dieser Adapter hängt an einem PI4
https://www.amazon.de/gp/product/B06XJ6GQZX/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
Schalter steht auf HS. Ich verwende das empfohlene Anschlusskabel (siehe Screenshot), an dem ich verdrillte Adern von einem Patch-Kabel angelötet habe.

Muss an der Rotex oder in FHEM noch was aktiviert werden?

andi2055

#244
Hi,

ich habe das exakt so im Einsatz.
Bei mir habe ich die beiden grünen Kabel mit der HPSU verbunden.
Schalter ist Richtung Kabel gekippt - keine Ahnung ob das HS ist

Hast du das auch so? Beide Kabel mal vertauscht?

Maxman83

Ich habe auch die beiden grünen Kabel angeschlossen. Auch wenn vertauschen ausgeschlossen ist, weil ich es durchgemessen und überprüft hatte, habe ich es trotzdem eben mal gemacht. Leider ohne Erfolg. Muss man evtl. noch irgendwo auf 50KBaud umstellen? Ich habe hier irgendwo gelesen, dass es schon andere mit dem PI nicht hinbekommen haben.

ahermann86

Hallo Maxman83,

alles was man einstellen muss, steht im Wiki: https://wiki.fhem.de/wiki/Rotex_HPSU_Compact

Also: Woher also die Info mit den 50KBaud und dem nicht funktionierenden PI kommt - weiß ich nicht und verstehe es auch nicht...
Bevor wir also vermuten, gehen wir einmal Schritt für Schritt vor:

- Das Modul ist geladen - sieht man an deinem Screenshot.
  -> Modul und die JSON Datei ist richtig und vollständig geladen. Passt schon Mal

- In deinem Screenshot sehe ich, dass das State auf "disconnected" steht.
  -> Die Verbindung von FHEM zum Adapter steht nicht. Hat also mit CAN und Hardware nichts zu tun. Du suchst an der falschen Stelle.
  -> Was sagt die Logausgabe von FHEM? (Links unten über "Logfile" erreichbar)
  -> Hast du in der Linux Bash das "Rechte anpassen" durchgeführt? (Steht im Wiki)

Gruß
Axel

Maxman83

#247
Hallo Axel,

Rechte hatte ich gesetzt (siehe Screenshot).
In der Logfile sieht man folgenden Eintrag:
myHPSU: Can't open /dev/serial/by-path/pci-0000:01:00.0-usb-0:1.1:1.0-port0: No such file or directory

Ist hier noch ein Fehler drin?

edit: mit define myHPSU HPSU /dev/ttyUSB0 geht der Status auf opened. Verbindung ist da

ahermann86

Ja, der Fehler liegt an dem Pfad. Da hast du einen Teil vergessen:

Das müsste bei dir vermutlich so heißen:
/dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0-port0

Alternativ funktioniert auch das wie bei dir definierte /dev/ttyUSB0.
Bei einem USB Teilnehmer ist das auch so nie ein Problem...

Wenn dann die Verbindung von FHEM zum Adapter steht, wird das mit "opened" angezeigt. Wenn dann auch am Adapter eine rote LED dauernd leuchtet und mindestens 3 Stück blinken, ist der Adapter richtig initialisiert.

Wie ist da nun dein Stand?

Maxman83

Nachdem es richtig eingestellt war, hat es direkt funktioniert. Danke für den Hinweis.
Ich habe auch schon sämtliche Werte im ioBroker. Da hat mir noch einiges gefehlt.

Ich gehe davon aus, dass an dem Punkt Info.Q die thermische Leistung angezeigt wird?
Ist das ein Wert den die HPSU liefert oder wird der vom Modul errechnet?

ahermann86

Das berechnet das Modul intern, weil von der RoCon dieser Wert nicht kommt.

Steht im Wiki:  Info.Q: Aktuell abgegebene Energie (Q=m x c x delta t)

Maxman83


hackepeter

#252
Hallo zusammen,
erstmal Hut Ab vor der Implementierung!!
Kurz zu mir: Mein Name ist Oli und ich bin fast seit Stunde0 von PyHPSU dabei. Damals habe ich den FHEM Telnet Connector geschrieben und bis heute hatte ich den ausfallfrei im Einsatz an meiner HPSU compact 508.

Nun habe ich Zeit gefunden auf das Modul umzustellen.
Da ich DBLog nutze ist mir aufgefallen, dass Unit und Reading nicht sauber getrennt werden -> DbLog_splitFn ist nicht implementiert.
https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_DbLog_split
Mit meinen Rudimentären Perl-Kentnissen habe ich fix was zusammengeklimpert, was bei mir funktioniert. Ich denke es gibt aber Verbesserungspotenzial!  :


sub HPSU_Initialize($)
{
  my ($hash) = @_;

  $hash->{DefFn}    = "HPSU_Define";
  $hash->{UndefFn}  = "HPSU_Undef";
  $hash->{SetFn}    = "HPSU_Set";
  $hash->{GetFn}    = "HPSU_Get";
  $hash->{ReadFn}   = "HPSU_Read";
  $hash->{ReadyFn}  = "HPSU_Ready";
  $hash->{AttrFn}    = "HPSU_Attr";
  $hash->{DbLog_splitFn} = "HPSU_DbLog_split";
  $hash->{AttrList}  = "AutoPoll:on,off AntiMixerSwing:on,off CheckDHWInterrupted:on,off ".
                       "DebugLog:on,onWithMsg,onDHW,off ".
                       "AntiContinousHeating:on,off ".
                       "RememberSetValues:on,off ".
                       "SuppressRetryWarnings:on,off ". #"Comm.(Set|Get)Status", "Error: retry ...
                       $readingFnAttributes;
}



### FHEM HIFN ###

###############################################################
#               DbLog_splitFn
###############################################################

sub HPSU_DbLog_split($$)
{
  my ($event, $device) = @_;
  my $devhash = $defs{$device};
  my ($reading, $value, $unit);

    $reading = ( split / /, $event, 3 )[0];
    chop $reading;
    $value = ( split / /, $event, 3 )[1];
    $unit = ( split / /, $event, 3 )[2];

  return ($reading, $value, $unit);
}


Des Weiteren vermisse ich - das für mich sehr wichtige - error Reading -> Sprich wenn die Heizung einen Fehler hat (rotes Display), kann man die Fehlernummer auslesen. Diese ist wenn alles gut 0...  In dem Fork von Spanni hatten wir es in der json error genannt.

"error" : {
"name" : "error",
"command" : "31 00 FA 13 88 00 00",
"id" : "190",
"divisor" : "1",
"writable" : "false",
"unit" : "",
"type" : "value"


Evt. muss es nochmal getestet werden, ein Fehler kann ja leicht provoziert werden.

Mich würde auch mal interessieren, welche Firmware Versionen ihr im Einsatz habt!
Bei mir wurde zuletzt vor ca. 2 Jahren ein Update gemacht:
BU1: 367 Rev. 01D
Regler: 366 Rev. 03C
RTXRT: 1.08.98

Ich hatte damals Probleme die nur mit einem "teuren" SW-Update gelöst werden konnten: https://www.haustechnikdialog.de/Forum/p/2703039

Nachtrag: Ich habe einige DOIfs, FTUI, ... welches die Readings von HPSU verarbeitet. Es bedeutet einiges an Mehraufwand jedes mal die Einheit hinter dem Reading zu entfernen. Könnte man die Einheit nicht einheitlich hinter den Namen des Readings packen:
HPSU.T_direkter_Heizkreis      35.6 °C     ->     HPSU.T_direkter_Heizkreis.°C      35.6


ahermann86

Hallo hackepeter,

danke für das Feedback.

Da du in dem Code arbeitest muss eines klar sein - auf die Codequalität bin ich nicht stolz, da das mein Erstes Perl Projekt ist.  ::) Wenn du du in die "devoelope" reinschaust, wirst du einige "verschönerungen" erkennen. Das wird beim nächsten Release hineinfließen.

--

Wegen dem DBLog - das würde ich in die Version 1.13 mit reinpacken (Die 12er ist im Moment die im "develope"). Die wartet schon aufs "veröffentlichen".

Habe deine "HPSU_DbLog_split" umgebaut - kannst du nachfolgendes Mal probieren?


sub HPSU_DbLog_split($$)
{
  my ($event, $device) = @_;
  my $reading = "";
  my $value = "";
  my $unit = "";
  my @parts = split(/ /,$event,3);
 
  if(defined($parts[1]))
  {
    $reading = $parts[0];
    $reading =~ tr/://d;
    $value = $parts[1];
    $unit = $parts[2] if(defined($parts[2]));
  }

  return ($reading, $value, $unit);
}


--

Zu dem "error" - das werde ich ausprobieren - jetzt weiß ich auch, was damit gemeint ist/war ;)

--

Das "umstellen" der Readings würde ich äußerst ungern machen. Das wäre dann nicht mehr "FHEM konform".
Kannst du in deinen DOIFs nicht einfach ein :d dahinter schreiben?
(Beispiel: [myHPSU:HPSU.T_Warmwasser:d] < 46.5)

Gruß
Axel

hackepeter

Hallo Achsel,

vielen Dank für die Schnelle Antwort und die Implementierung des DbLog_split. Während du geantwortet hast, hatte ich meinen Code oben schon verbessert (auch mit split, 100 if´s kann man ja keinem antun, gestern war es zu spät für mich :) )

ZitatZu dem "error" - das werde ich ausprobieren - jetzt weiß ich auch, was damit gemeint ist/war ;)

Ich habe damals glaube ich irgend ein Sensor abgezogen, um einen Fehler zu provozieren.