Cannot create socket HM485d: Can't open server port at 2000: Address already in

Begonnen von Arno.Kahle, 18 Januar 2017, 22:51:20

Vorheriges Thema - Nächstes Thema

Arno.Kahle

Hallo zusammen,

dieses Thema war leider schon 2015 diskutiert und mit vielen Ratschlägen versehen worden. Habe einige davon nachvollzogen und alle implementiert gefunden.

Trotzdem bekomme ich den Daemon HM485d nicht zum Starten. Nach log ist der Port, egal welchen ich einstelle, bereits "in use"

Wer kann mir da helfen, oder mit welcher Hardware bekomme ich diesen Bus zum Laufen?

Wer hat von HM den 12 Input 7 Output Block denn erfolgreich am FHEM am Laufen?


Bin gerade am Verzweifeln...

Viele Grüße
Arno

post@arno-kahle.de


Thorsten Pferdekaemper

Hi,
könntest Du den Thread nach Homematic verschieben?
Außerdem:
Ich habe mehrere von diesen 12/7ern und andere HMW-Sachen am Laufen.
Gruß,
   Thorsten
FUIP

Arno.Kahle

Hallo Thorsten,
vielen Dank, bin hier offensichtlich newbee :) und gestern nach Monaten Blockade erheblich genervt gewesen...

Version:
Latest Revision: 13135

File                     Rev   Last Change

fhem.pl                  13120 2017-01-17 09:38:18Z rudolfkoenig
96_allowed.pm            13118 2017-01-17 09:28:44Z rudolfkoenig
98_autocreate.pm         11984 2016-08-19 12:47:50Z rudolfkoenig
57_Calendar.pm           12946 2017-01-03 17:22:41Z neubert
10_CUL_HM.pm             13085 2017-01-15 13:24:15Z martinp876
95_Dashboard.pm          12251 2016-10-03 09:45:43Z talkabout
98_dummy.pm              12700 2016-12-02 16:49:42Z rudolfkoenig
91_eventTypes.pm         11984 2016-08-19 12:47:50Z rudolfkoenig
01_FHEMWEB.pm            13128 2017-01-17 21:40:09Z rudolfkoenig
92_FileLog.pm            13069 2017-01-14 20:25:15Z rudolfkoenig
No Id found for 00_HM485_LAN.pm
98_HMinfo.pm             12917 2016-12-31 07:44:34Z martinp876
00_HMLAN.pm              12351 2016-10-16 18:18:00Z martinp876
No Id found for hmw_io12_sw14_dr.pm
No Id found for hmw_io12_sw7_dr.pm
No Id found for hmw_io12_sw7_dr_V3_02.pm
No Id found for hmw_io_12_fm.pm
No Id found for hmw_sen_sc_12_dr.pm
98_HTTPMOD.pm            12220 2016-09-29 18:25:09Z ststrobel
91_notify.pm             11984 2016-08-19 12:47:50Z rudolfkoenig
33_readingsGroup.pm      12774 2016-12-14 17:16:09Z justme1968
99_SUNRISE_EL.pm         12485 2016-11-01 15:18:51Z rudolfkoenig
98_SVG.pm                12482 2016-11-01 09:25:59Z rudolfkoenig
98_telnet.pm             11984 2016-08-19 12:47:50Z rudolfkoenig
00_THZ.pm                13091 2017-01-15 15:58:02Z immi
98_update.pm             12801 2016-12-17 16:52:31Z rudolfkoenig
99_Utils.pm              11984 2016-08-19 12:47:50Z rudolfkoenig
98_version.pm            11987 2016-08-19 17:13:41Z markusbloch
59_Weather.pm            12559 2016-11-13 08:54:54Z borisneubert
98_weblink.pm            11984 2016-08-19 12:47:50Z rudolfkoenig

Blocking.pm              12648 2016-11-24 12:15:25Z rudolfkoenig
Color.pm                 11159 2016-03-30 16:08:06Z justme1968
No Id found for Constants.pm
No Id found for Device.pm
DevIo.pm                 12716 2016-12-05 09:11:31Z rudolfkoenig
HMConfig.pm              12942 2017-01-03 07:42:02Z martinp876
No Id found for hmw_central.pm
No Id found for hmw_generic.pm
No Id found for hmw_io_4_fm.pm
No Id found for hmw_io_4_fm_V3_02.pm
No Id found for hmw_io_sr_fm.pm
No Id found for hmw_lc_bl1_dr.pm
No Id found for hmw_lc_bl1_dr_V3_02.pm
No Id found for hmw_lc_dim1l_dr.pm
No Id found for hmw_lc_sw2_dr.pm
No Id found for hmw_lc_sw2_dr_V3_02.pm
No Id found for hmw_virtual.pm
HttpUtils.pm             13084 2017-01-15 12:59:16Z rudolfkoenig
RTypes.pm                10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm         12935 2017-01-02 19:51:46Z rudolfkoenig
TcpServerUtils.pm        11908 2016-08-06 15:09:55Z rudolfkoenig
No Id found for Util.pm
YahooWeatherAPI.pm       12465 2016-10-29 09:01:31Z borisneubert

Hardware:
Raspi2 B+
RS485 Aufsteckkarte von Linksprite (conrad)
OS:
Linux FhemServer 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

Alle Beiträge habe ich gelesen und durchgearbeitet, also gecheckt, ob es auch so eingestellt ist..

HM485_LAN:


DEF                                                          localhost:2000
DeviceName                                           localhost:2000
FD                                                            17
HM485d_CommandLine                    ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
HM485d_PID                                         26149
HM485d_STATE                                  started
NAME                                                      RS485_Bus
NR                                                           117
PARTIAL 
STATE                                                    opened
TYPE                                                       HM485_LAN
hmwId                                                      00000001
msgCounter                                            0

Devicestatus:
RS485_Bus                                           disconnected

Zugriffsrechte hab ich richtig gesetzt

Leider hab ich gerade noch nicht herausgefunden, wie ich den Thread nach "Homematic" verschieben kann. Ich arbeite weiter dran.

Vielen Dank für Deinen Support :)
Gruß
Arno

Thorsten Pferdekaemper

Hi,
also ob das mit dieser Aufsteckkarte läuft weiß ich nicht. Das Ding habe ich noch nie gesehen. Hol Dir vielleicht mal so ein Digitus-Teil wie im Wiki beschrieben und probier's damit. Wenn es damit läuft, dann können wir es ggf. nochmal mit der Aufsteckkarte versuchen.
Ansonsten wäre es nett, wenn Du für die ganzen Ausgaben code-Tags verwenden könntest.
Dann hätte ich noch gerne den Inhalt der Datei /opt/fhem/FHEM/10_HM485.pm.
...und die Ausgabe des Befehls "list RS485_bus".
Könntest Du dann noch das Attribut HM485d_logVerbose von RS485_bus auf 5 setzen und das ganze nochmal starten. Dann hätte ich gerne, was das ins Log schreibt.
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
was mir noch einfällt: Kann es sein, dass Du HM485d_bind auf 1 stehen hast und trotzdem den HM485d manuell oder so startest?
Gruß,
   Thorsten
FUIP

Arno.Kahle

Hi Thorsten,

hab den digitus bestellt, ist gerade vergriffen.

Ich starte nichts manuell und ja den HM485d_bind hab ich auf 1 stehen.

Hier der log-Auszug nachdem ich verbose 5 gesetzt habe:


2017.01.19 20:03:17 3: RS485_Bus: Start HM485d with command line: ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
2017.01.19 20:03:17 3: RS485_Bus: HM485d was started with PID:  4543
2017.01.19 20:03:17 3: RS485_Bus: Connect to HM485d delayed for 5 seconds
2017.01.19 20:03:17 3: Opening RS485_Bus device localhost:2000
2017.01.19 20:03:17 3: RS485_Bus: connected to device localhost:2000
2017.01.19 20:03:17 3: RS485_Bus device opened
2017.01.19 20:03:17 1: localhost:2000 disconnected, waiting to reappear (RS485_Bus)
2017.01.19 20:03:18.417 0: HM485d: Cannot create socket HM485d: Can't open server port at 2000: Address already in use
Cannot create socket HM485d: Can't open server port at 2000: Address already in use
2017.01.19 20:03:21 3: RS485_Bus: Start HM485d with command line: ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
2017.01.19 20:03:21 3: RS485_Bus: HM485d was started with PID:  4561
2017.01.19 20:03:21 3: RS485_Bus: Connect to HM485d delayed for 5 seconds
2017.01.19 20:03:21 3: Opening RS485_Bus device localhost:2000
2017.01.19 20:03:21 3: RS485_Bus: connected to device localhost:2000
2017.01.19 20:03:21 3: RS485_Bus device opened
2017.01.19 20:03:21 1: localhost:2000 disconnected, waiting to reappear (RS485_Bus)
2017.01.19 20:03:22.693 0: HM485d: Cannot create socket HM485d: Can't open server port at 2000: Address already in use
Cannot create socket HM485d: Can't open server port at 2000: Address already in use
20




Arno.Kahle


Thorsten Pferdekaemper

Hi,
also mir ist echt unklar, was da abgeht. Ich habe so ziemlich dieselbe Konfiguration und da klappt es wunderbar.
Es sieht so aus, als ob sich das IO-Device (also RS485_Bus) erst mit dem Daemon verbindet, ihn aber dann wieder "verliert". Das ist ein wenig seltsam.
Kannst Du mal auf Betriebssystemebene ein "ps -aux | grep HM485" machen?
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
etwas seltsam ist auch das hier:

2017.01.19 20:03:17 3: RS485_Bus: Connect to HM485d delayed for 5 seconds
2017.01.19 20:03:17 3: Opening RS485_Bus device localhost:2000
2017.01.19 20:03:17 3: RS485_Bus: connected to device localhost:2000

D.h. er sagt, dass der connect um 5 Sekunden delayed ist, aber dann geht es sofort weiter.
Hast Du irgendwelche Änderungen im 00_HM485_LAN.pm gemacht?
Gruß,
   Thorsten
FUIP

Arno.Kahle

Hi,
irgendwo hatte ich gelesen, dass manchmal eine Delaytime bei Störungen hilft. Das habe ich dann auch mit einer Variable eingestellt:

attr HM485d_startTimeout 3

Die ist allerdings nur 3 sec!

ps aux zeigt den laufenden Prozess, wenn ich nicht das Device komplett gestoppt habe, da es sonst immer nur anläuft abfällt und mir die logs unnütz voll schreibt. Wenn er nicht läuft, ist auch kein Prozess zu finden. so, wie es sein soll, denk ich.

Das sieht so aus, als würde irgendwas den Port belegen, aber beim Wechsel der Nummer ist der gleiche Effekt. Also müsste, blödsinnigerweise, der Prozess sich den Port früher belegen, als er checked, ob er frei ist. Oder den Port versuchen mehrfach aufzumachen.
Wie könnte ich checken, ob der Port frei für den Prozess ist? Ich frag da mal morgen unsere Netzwerker...

Gruß und gute Nacht
Arno

Arno.Kahle

Ach, 00_HM485_LAN.pm hab ich nicht verändert. Trotzdem als Anhang...

Arno

Thorsten Pferdekaemper

Zitat von: Arno.Kahle am 19 Januar 2017, 23:37:59
attr HM485d_startTimeout 3
Das ist jetzt sehr seltsam, da im Log 5 Sekunden steht.
Gib mir doch endlich mal ein "list RS485_Bus".

Zitatps aux zeigt den laufenden Prozess, ...
Ok, wahrscheinlich falsche Fährte.

Ich kann das ganze leider momentan gar nicht richtig ausprobieren, da ich nicht mit meiner "Produktiv"-Umgebung spielen will und ich ansonsten gerade kein Linux-System ordentlich aufgesetzt habe.
Könntest Du mal versuchen, den Daemon auf Betriebssystemebene manuell zu starten? Am besten, wenn FHEM gar nicht läuft. Die Commandline steht ja im RS485_Bus-Device. Mal sehen, ob das irgendwelche Fehler erzeugt.
Dann vielleicht auch mal HM485d_bind auf 0 setzen und ausprobieren, ob das RS485_Bus sich mit dem Daemon verbindet.

Gruß,
  Thorsten

FUIP

Arno.Kahle

list RS485_Bus:

Internals:
   DEF        localhost:2000
   DeviceName localhost:2000
   HM485d_CommandLine ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
   HM485d_PID 10122
   HM485d_STATE started
   NAME       RS485_Bus
   NR         117
   PARTIAL
   STATE      disconnected
   TYPE       HM485_LAN
   hmwId      00000001
   msgCounter 0
   Readings:
     2017-01-20 08:31:28   state           disconnected
Attributes:
   HM485d_bind 1
   HM485d_device /dev/ttyAMA0
   hmwId      00000001
   room       HM485


Der Startversuch:

root@FhemServer:/opt/fhem# ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
2017.01.20 08:37:14.759 0: HM485d: Cannot create socket HM485d: Can't open server port at 2000: Die Adresse wird bereits verwendet
Cannot create socket HM485d: Can't open server port at 2000: Die Adresse wird bereits verwendet
root@FhemServer:/opt/fhem# ps aux | grep HM485
root     14828  0.0  0.1   3864  1692 pts/0    S+   08:37   0:00 grep HM485
root@FhemServer:/opt/fhem# ps aux | grep fhem
root     14830  0.0  0.1   3864  1648 pts/0    S+   08:37   0:00 grep fhem
root@FhemServer:/opt/fhem# ps aux | grep FHEM
root     14833  0.0  0.1   3864  1740 pts/0    S+   08:38   0:00 grep FHEM
root@FhemServer:/opt/fhem#


Ich hab noch alles für einen zweiten Aufbau da, den ich zum Probieren.
Folgendes interessantes hab ich noch gefunden. Der port ist tatsächlich belegt:

root@FhemServer:/opt/fhem# netstat -tulpn
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2265/smbd       
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      2027/ser2net   
tcp        0      0 0.0.0.0:2001            0.0.0.0:*               LISTEN      2027/ser2net   
tcp        0      0 0.0.0.0:2003            0.0.0.0:*               LISTEN      2027/ser2net   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2261/sshd       
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      2027/ser2net   
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      2027/ser2net   
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2265/smbd       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           2482/dhcpcd     
udp        0      0 10.1.1.98:123           0.0.0.0:*                           2172/ntpd       
udp        0      0 127.0.0.1:123           0.0.0.0:*                           2172/ntpd       
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2172/ntpd       
udp        0      0 10.1.1.255:137          0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.98:137           0.0.0.0:*                           2194/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.255:138          0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.98:138           0.0.0.0:*                           2194/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           2194/nmbd       
root@FhemServer:/opt/fhem#


Der Prozess dazu:

ps aux | grep ser2net
root      2027  0.0  0.1   1764  1032 ?        S    Jan18   1:22 /usr/sbin/ser2net -c /etc/ser2net.conf -P /var/run/ser2net.pid
root     14842  0.0  0.1   3868  1744 pts/0    S+   08:44   0:00 grep ser2net
root@FhemServer:/opt/fhem#


Ich bin dann mal weiter gegangen. Achtung erstmal noch alles unter root.

root@FhemServer:/opt/fhem# kill 2027
root@FhemServer:/opt/fhem# ps aux | grep ser2net
root     14846  0.0  0.1   3864  1692 pts/0    S+   08:45   0:00 grep ser2net
root@FhemServer:/opt/fhem# ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
^Z
[1]+  Angehalten              ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
root@FhemServer:/opt/fhem# bg
[1]+ ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000 &
root@FhemServer:/opt/fhem# ps aux | grep ser2net
root     14849  0.0  0.1   3864  1668 pts/0    S+   08:46   0:00 grep ser2net
root@FhemServer:/opt/fhem# netstat -tulpn
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2265/smbd       
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      14847/perl     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2261/sshd       
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2265/smbd       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           2482/dhcpcd     
udp        0      0 10.1.1.98:123           0.0.0.0:*                           2172/ntpd       
udp        0      0 127.0.0.1:123           0.0.0.0:*                           2172/ntpd       
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2172/ntpd       
udp        0      0 10.1.1.255:137          0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.98:137           0.0.0.0:*                           2194/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.255:138          0.0.0.0:*                           2194/nmbd       
udp        0      0 10.1.1.98:138           0.0.0.0:*                           2194/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           2194/nmbd       
root@FhemServer:/opt/fhem#


Also der Daemon läuft jetzt offensichtlich...
Ich werde jetzt mal die Kiste wieder durchbooten und sehen, ob und wann, wo der Prozess automatisch gestartet wird.

Ich meld mich wieder.
Arno

Arno.Kahle

Hallo Thorsten,

der Daemon läuft jetzt nach meinem manuellen Eingriff mit:

kill PID(ser2net)

Internals:
   DEF        localhost:2000
   DeviceName localhost:2000
   FD         16
   HM485d_CommandLine ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
   HM485d_PID  3993
   HM485d_STATE started
   InterfaceType HMW-SOFT-GW
   NAME       RS485_Bus
   NR         117
   PARTIAL
   ProtokolVersion 01
   STATE      opened
   SerialNumber SGW0123456
   TYPE       HM485_LAN
   Version    0.2.2
   hmwId      00000001
   msgCounter 19
   Readings:
     2017-01-20 08:55:27   state           opened
   Keepalive:
     ok         1
     retry      0
Attributes:
   HM485d_bind 1
   HM485d_device /dev/ttyAMA0
   hmwId      00000001
   room       HM485


Weißt Du, wo der Prozess gestartet wird...? Damit ich ihn dauerhaft abstellen kann.

Der HMW-IO-12-Sw7-DR hat jetzt schon mal anders geblinkt, ist noch nicht zu sehen. Aber dazu muss ich nochmal in Eure Hilfe reinschauen.

Gruß
Arno

Arno.Kahle

Hi Thorsten,

nachdem ich in den Init-Scripten im rc2.d das Startscript für ser2net deaktiviert habe, started fhem jetzt mit dem RS485 Bus durch.

2017.01.20 13:18:24 3: RS485_Bus: Start HM485d with command line: ./FHEM/lib/HM485/HM485d/HM485d.pl --hmwId 00000001 --serialNumber SGW0123456 --device /dev/ttyAMA0 --localPort 2000
2017.01.20 13:18:25 3: RS485_Bus: HM485d was started with PID:  6334
2017.01.20 13:18:25 3: RS485_Bus: Connect to HM485d delayed for 5 seconds
2017.01.20 13:18:26 3: RS485_Bus: connected to device localhost:2000
2017.01.20 13:18:26 1: localhost:2000 reappeared (RS485_Bus)
2017.01.20 13:18:26 3: RS485_Bus: Lan Device Information
2017.01.20 13:18:26 3: RS485_Bus: Protocol-Version: 01
2017.01.20 13:18:26 3: RS485_Bus: Interface-Type: HMW-SOFT-GW
2017.01.20 13:18:26 3: RS485_Bus: Firmware-Version: 0.2.2
2017.01.20 13:18:26 3: RS485_Bus: Serial-Number: SGW0123456
2017.01.20 13:18:26 3: RS485_Bus: Initialize the interface
2017.01.20 13:18:51 1: PERL WARNING: Use of uninitialized value in string eq at FHEM/lib/HM485/FhemWebHelper.pm line 17.
2017.01.20 13:19:21 3: IO12_7MEQ1769873: Initialisierungsfehler 0000BA81 ModelName noch nicht vorhanden
2017.01.20 13:19:36 1: PERL WARNING: Use of uninitialized value in sprintf at fhem.pl line 2166.


Eine Kommunikation zu dem HMW-IO-12-Sw7-DR scheint aber trotzdem noch nicht zu funktionieren. Ein autocreate liefert mir auch keinen Eintrag, wie im Wiki beschrieben, dass man wenigstens erstmal mit Betätigung eines Eingangsschalters einen Eintrag generiert. Die Lampe am Device blinkt nur beim Einschalten.
Daraufhin habe ich das Device einmal gemäß dem Eintrag im Wiki von Hand eingetragen, aber es funktioniert nicht, wie man oben im log sieht.

Internals:
   DEF        0000BA81
   FailedConfigReads 0
   IODev
   NAME       IO12_7MEQ1769873
   NR         35
   STATE      ???
   TYPE       HM485
   Readings:
     2017-01-20 13:45:34   configStatus    0
Attributes:
   room       RS485_Bus
   verbose    5


Und der log des Devices ist leer.
Hast Du da noch weitere Hilfe...
Ich denke, vielleicht ist das jetzt dann auch besser als neues Thema geeignet?

Gruß
Arno