Anbindung an openHCAN

Begonnen von GU!DO, 11 Oktober 2017, 10:30:09

Vorheriges Thema - Nächstes Thema

GU!DO

Der String sollte passen. (16mal \x00) Den sende ich ein meinem hcan2.pl auch.
Ich mache nochmal einen Dump vom hash innerhalb von _write. Auch wenn es vermutlich nix bringt.

Die Emfpangenen Daten habe ich in hex umgewandelt. Sonst kamen nur wilde Sonderzeichen.

Die 30 Sekunden sollten gefühlt passen. Sind vermutlich ehr zu "kurz" als zu lang. Ich habe da leider genauen Zeiten. Da müßte ich mal den Quellcode vom Daemon durchforsten.

Auf jeden Fall beobachte ich den Daemon mit einem anderen UDP Client. Der sendet munter vor sich hin. Auch kurz nachdem im Log grad angezeigt wird, dass das keep_alive frame gesendet wurde.
Es taucht aber trotzdem nichts Empfangenes auf.

CoolTux

Vielleicht ist genau das das Problem. Das da noch ein anderer Client mit dran klebt. Mach mal nur dein Modul eine Verbindung aufbauen und sonst nichts anderes.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Nee, das sollte kein Problem sein. Ich hatte, als ich mit meinem perl Modul experiemtiert habe, auch noch den "original" telican client mitlaufen. Genau wie jetzt auch. Ich versuche es noch mal ohne den 2. Client. Schreibe Dir dann was es gegeben hat und hänge den aktuellen Coden an.

Vielen Dank nochmals & eine gute Nacht - ohne FHEM Träume  ;)

GU!DO

Also, ich habe nochmals folgendes gemacht:

1. den $hash gedumpt, das ist die Ausgabe:

!!!Define
2017.10.31 23:03:27 3: HCAN_Test (HCAN_Test) - defined with host localhost
!!!Set
!!!Set
!!!Set
!!!Write
2017.10.31 23:03:30 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: ';
2017.10.31 23:03:30 3: HCAN_Test (HCAN_Test) - socket not connected
!!!Set
!!!Open
2017.10.31 23:03:36 4: HCAN_Test (HCAN_Test) - Baue Socket Verbindung auf
!!!Set
2017.10.31 23:03:36 4: HCAN_Test (HCAN_Test) - Socket Connected
!!!Write
2017.10.31 23:03:36 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: IO::Socket::INET=GLOB(0x9ffc4dc)';
2017.10.31 23:03:36 3: HCAN_Test (HCAN_Test) - \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
!!!Set
!!!Set
!!!Set
!!!Write
2017.10.31 23:03:50 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: ';
2017.10.31 23:03:50 3: HCAN_Test (HCAN_Test) - socket not connected
!!!Write
2017.10.31 23:03:51 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: ';
2017.10.31 23:03:51 3: HCAN_Test (HCAN_Test) - socket not connected


Den Dump habe ich im angehangenen Quellcode belassen, dann sieht Du wo er eingefügt ist.

2. Habe ich den "Kontroll"-UDP Client beendet, und alles neu gestertet.
Wie vermutet, werden trotzdem im Log keine Pakete angezeigt.

In der Doku zum Daemon steht auch, dass er "Mulit-Client" fähig ist. Er trägt sich den Port jedes Clients nach dem ersten Connect durch den Client ein, und sendet die Daten dann auch an den Client-Port.

Bzgl. der Zeiten, nach denen der Daemon den Versand an den Client unterbricht und auf ein Keep Alive Paket wartet, müßte ich noch mal suchen.
Wenn die Kontaktaufnahme über ein physiches Modul läuft, wäre doch auch das Try/Catch konstrukt aus meinem Perl-Client (hcan2.pl) möglich - oder?!?
Das wäre dann IMHO die Sauberste Lösung. So würde er sich ja neu verbinden, sobald der Socket down ist und nichts geht verloren.

Vielen Dank nochmals für Deine Hilfe!

Gute Nacht!

CoolTux

Guten Morgen,

Eigentlich passt bei Deinem Modul soweit alles was ich gesehen habe. Ein zwei Sachen habe ich mal hinzu gefügt und auch was weg genommen. Vorerst. Unter anderem dem Type der Socketverbindung, also ob Stream oder Datagramm.
Mal schauen was er draus macht. Und das unpack habe ich mal in die Read mit eingebaut.

Probiere bitte einfach mal erstmal so und was dann im fhem log steht bräuchte ich bitte einmal.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Ebenfalls Guten Morgen!

Ich hatte noch nicht mit Dir gerechnet!  ;)

Ich habe mir mal mit tcpdump die Pakete angesehen, die unterwegs sind. Aus FHEM wird nix versendet. Das Log schreibt zwar:
2017.11.01 08:05:02 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: IO::Socket::INET=GLOB(0x97b7b74)';
2017.11.01 08:05:02 3: HCAN_Test (HCAN_Test) - \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00


Aber es sind keine Paket von FHEM auf localhost zu sehen.

Werde das Programm mit Deinen Änderungen aber trotzdem mal ausführen.

GU!DO

Nee, leider immer noch  keine Pakete vom FHEM.
Ich habe in meinem Testprogramm DGRAM verwendet, wird im "original" hcan Tool ebenfalls verwendet - muß also damit gehen.

Soll ich den Quellcode von Gestern wieder aktivieren, oder den von Dir gesendeten umstellen auf DGRAM.

Frage nur, damit wir die gleichen Versionen haben.

Falls du möchtest, könnte ich dir zum Testen den hcand und telican senden. Die sollten unabhängig vom Bus laufen, und alle ca. 60 sek. Zeit und Datum Pakete per UDP senden. Ich würde natürlich vorher probieren, ob die wirklich ohne Bus lauffähig sind...

Falls ja, müßtest Du nur "hcand &  telican --timed &" aufrufen und könntest in einem 2. Fenster mit telican -d den Dump der UDP Pakete zur Kontrolle sehen.

Ich muß jetzt kurz `ne Milch für unsere Kinder zaubern. Bin gleich zurück...

CoolTux

Viel habe ich ja nicht geändert. Können die aktuelle gerne belassen. Das mit dem Type kannst ja einfach wieder einbauen.

Und Dein pl File hat funktioniert? also dort konntest Du Daten an den Bus senden und auch empfangen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Möglich das ich einen Fehler gefunden habe. Moment
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Nee, leider immer noch nicht.
Habe den Typ auch wieder auf Datagram gestellt, leider ebenfalls nix.

CoolTux

och menno,

Noch mal die Frage. Das pl hatte aber funktioniert sagst?
Vielleicht hat es was damit zu tun das es udp ist. Aber das muß ich wenn auch erst nach schauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Ich habe das hcan2.pl die ganze Zeit parallel mitlaufen gehabt.
Es gibt mir auf der Konsole die hcan Frames als HEX aus.
Ich sehe im tcpdump auch die keep_alive Pakete:
09:19:01.879164 IP localhost.35554 > localhost.3600: UDP, length 16
0x0000:  4500 002c be53 4000 4011 7e6b 7f00 0001
0x0010:  7f00 0001 8ae2 0e10 0018 fe2b 0000 0000
0x0020:  0000 0000 0000 0000 0000 0000


Nur vom FHEM is nix zu sehen.

Hab die Parameter nochmals überprüft. Ich kann nichts entdecken.

Hier nochmal der Ablauf:

########### MODUL RELOAD: reload 78_HCAN_Test
!!!Initialize
########### MODUL DEFINE: define HCAN_Test HCAN_Test localhost
!!!Define
2017.11.01 09:41:09 3: HCAN_Test (HCAN_Test) - defined with host localhost
!!!Set
!!!Set
!!!Set
################### KLICK AUF SET HCAN_Test CONNECT
!!!Set
!!!Open
2017.11.01 09:41:37 3: HCAN_Test (HCAN_Test) - Baue Socket Verbindung auf
!!!Set
2017.11.01 09:41:37 3: HCAN_Test (HCAN_Test) - Socket Connected
!!!Write
2017.11.01 09:41:37 3: HCAN_Test (HCAN_Test) - WriteFn called
$VAR1 = 'Dumper: IO::Socket::INET=GLOB(0xabd8fb8)';
2017.11.01 09:41:37 3: HCAN_Test (HCAN_Test) - \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
2017.11.01 09:41:37 1: PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/78_HCAN_Test.pm line 256.


CoolTux

Habe gerade gesehen das in der KeepAlive Funktion beim InternalTimer Aufruf noch ein Fehler ist. $hash->INTERVAL muß raus. Da darf nur +30 stehen.
Aber das wird es nicht sein.

und wenn Du das pl Script aus lässt kommt bei FHEM auch nichts an?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Ah, dann war das der Grund für die Warnung von perl.

Ich habe gestern Abend noch alle tools außer FHEM beendet. Trotzdem kein Verbindung.

Hab grad nochmals die offenen Ports überprüft. Also, so bald ich auf set connect klicke, habe ich einen UDP Port mehr.
Das scheint also soweit zu funktionieren.

Fragt sich nur, warum er die Daten nicht heraus bekommt.