ESP8266 als ser2net Server für KM271

Begonnen von bugster_de, 13 August 2017, 23:04:55

Vorheriges Thema - Nächstes Thema

bugster_de

Hallo Leute,

ich habe den ganzen Mittag rum gefummelt und es will nicht klappen. Ich möchte gerne einen ESP8266 (oder einen Arduino) als ser2net Server für die RS232 Schnittstelle meiner Buderus Heizung im Keller nutzen, so dass das FHEM dann vie ser2net auf diese Schnittstelle zugreifen kann. Ich habe mir jetzt eine kleine Code gebaut, der erstmal nur den Port aufmacht und lauscht, was da so vom FHEM Server kommt.
Hier mal der Code für einen Arduino. Der macht einen Server auf Port 8000 auf und lauscht.

// the relay server
EthernetServer server( 8000 );
// the place holder for the client
EthernetClient client;

void setup ( void ) {
// enable the serial line
  Serial.begin( MM_SERBAUD );
  Serial.println( "Booting up" );

  // start the Ethernet
  if( MM_ETH_DHCP ) {
    while( Ethernet.begin( g_Eth_MAC ) == 0 ) {
      Serial.println( "Failed DHCP" );
    }
  } else {
    Ethernet.begin( g_Eth_MAC, g_Eth_IP );
  }

  Serial.print("IP = ");
  Serial.println( Ethernet.localIP( ) );

  delay( 100 );
  server.begin( );
}

void loop( void ) {

  // wait for a new client:
  client = server.available();
 
  // when the client sends the first byte, say hello:
  if( client ) {
      Serial.println( "We have a new client" );
      delay( 100 );
      server.write( "Hello\n" );
      alreadyConnected = true;

    if( client.available( ) > 0 ) {
      Serial.print( "Number of bytes for reading: " );
      Serial.println( client.available( ) );

      for( int i = 0; i < client.available( ); i++ ) {
// read the bytes incoming from the client:
char thisChar = client.read( );
Serial.write( thisChar );
      }
    }
    client.stop();
  }
}


Auf FHEM Seiten dann
define myHeiz KM271 192.168.2.93:8000

Und wenn ich den define so setzte, dann friert FHEM ein. Dies passiert an der Stelle im KM271 Code in der DoInit Funktion
DevIo_DoSimpleRead($hash);

Mein Arduino sagt mir, dass wir einen Client haben und danach ist alles eingefroren.
Wenn ich das gleiche für meinen SMS-Guard One-Wire Gateway mache, dann geht es.
also:
define mySMS OW2S0SMSGUARD 192.168.2.93:8000 60

Ich finde aber nicht den Unterschied zwischen dem KM271 Code und dem SMSGuard Code. beide nutzen die gleichen Funktionen aus der DevIo.pm.
Kann mich jemand bitte in die richtige Richtung schubsen?


Für diejenigen, die sich fragen "was soll der Quatsch" hier mein Anwendungsfall:
meine Heizung steht im Keller :) Die hat ein KM271 Kommunikationsmodul für RS232 drin, dessen Daten an den Raspi mit FHEM sollen. An allen möglichen Stellen an der Heizung habe ich auch DS18b20 Sensoren verbaut und mit einem SMS-Guard One-Wire. Beides steckt Stand heute an eine Raspi mit debian, welcher beide Schnittstellen einfach per ser2net für meinen FHEM Raspi im Netz bereit stellt.

Und nun sollen auch noch die Drucksensoren der Heizkreise via ADC angebunden werden. Und ich habe nur ein Ethernat Kabel bis zur Heizung. Ich brauche also ein gerät, das mir die RS232, die OneWire und die AD Kanäle im Netz bereit stellt, so dass die komplette Kette bis zum FHEM geschlossen ist und ich die Werte im FHEM sehen kann.

Danke !



Smarti

Ok sehr interessant, über das gleiche Thema bin ich nun auch gestolpert:

Mit ESP8266 & esp-link von Jeelabs
oder
ESP32 & esphome + stream server (https://github.com/oxan/esphome-stream-server)

Ich "sehe" einen Login im Debug. FHEM friert allerdings ein... Über Web interface nicht mehr ereichbar. Wenn ich über SSH die cfg editiere und das define vom KM271 wieder raus werfe, geht es wieder...

Nun ja jetzt darf wieder ein raspi 2 mit ser2net herhalten...

DasQ

#2
Hi,

Hab erst vor kurzem was Ähnliches umgesetzt. Allerdings mit dem KM271(FHEM Modul und buderus Interface) auf einer eigenen FHEM Instanz.

Soweit ich jetzt gelesen hab Sprudeln aus dem buderus Kommunikationsmodul zuviel Daten raus. Das eine reine serielle Übertragung mit einem esp8266 kein Sinn macht. Drum Nutz ich auch den raspberry.

Es gibt aber ein Entwickler der das Ganze auf einem ESP32 und ner eigenen Platine reengineert hat. Is im Microcontroller Forum thread eins (das) der letzten postings.
Kann dir den Link raus suchen und zu seim Github.

https://the78mole.de/reverse-engineering-the-buderus-km217/
https://gitlab.com/the78mole/logamatic_2107_wifi_comm
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

Smarti

Zitat von: DasQ am 04 November 2022, 07:55:10
Hi,

Hab erst vor kurzem was Ähnliches umgesetzt. Allerdings mit dem KM271(FHEM Modul und buderus Interface) auf einer eigenen FHEM Instanz.

Soweit ich jetzt gelesen hab Sprudeln aus dem buderus Kommunikationsmodul zuviel Daten raus. Das eine reine serielle Übertragung mit einem esp8266 kein Sinn macht. Drum Nutz ich auch den raspberry.

Es gibt aber ein Entwickler der das Ganze auf einem ESP32 und ner eigenen Platine reengineert hat. Is im Microcontroller Forum thread eins (das) der letzten postings.
Kann dir den Link raus suchen und zu seim Github.

https://the78mole.de/reverse-engineering-the-buderus-km217/
https://gitlab.com/the78mole/logamatic_2107_wifi_comm

Hallo, ja ich kenne das Projekt. Die HW habe ich auf dem Tisch liegen. Allerdings ist die SW noch nicht fertig...

Also bisher ist mir nur FHEM als einzig brauchbare Integration für das KM271 Modul bekannt. Eine Lösung hier einfach eine Umsetzung von RS232 auf WLAN wäre noch das i-Tüpfelchen.

Wobei Ser2net gut geht, leider scheint die neuste version ein wenig tricky zu sein (neues Config format) und der Dienst muss verzögert gestartet werden, häufig ist ein USB-Seriall adapter noch nicht vollständig geladen...

Wenn alles läuft, Filesystem auf ReadOnly. Dann kann da eigentlich nichts mehr passieren...