Autor Thema: lepresenced daten nutzen außerhalb FHEM  (Gelesen 116 mal)

Offline gomez

  • New Member
  • *
  • Beiträge: 22
lepresenced daten nutzen außerhalb FHEM
« am: 14 September 2017, 08:52:27 »
Hallo,

ich möchte meine zwei NUT Beacons mit lepresenced erkennen und die Daten auch außerhalb von FHEM nutzen? Geht das? Ich habe gesehen das lepresenced ein Port aufmacht, aber wie komme ich an die Daten. Leider bin ich beim lesen des perl codes nicht weitergekommen.

Danke schon mal im voraus,

Gomez

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10265
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #1 am: 14 September 2017, 09:33:59 »
Im Grunde musst Du nichts weiter machen wie einen TCP Socket auf zu bauen und die Daten aus zu lesen.
Ich gehe davon aus das Du Dich mit Perl aus kennst oder einer anderen Programmiersprache. Sonst bringt das alles ja nichts.
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline gomez

  • New Member
  • *
  • Beiträge: 22
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #2 am: 14 September 2017, 10:29:15 »
Danke CoolTux.

TCP Socket war schon mal ein wichtiger Tipp. Ich bin eher auf den oberen Layern der Programmierung unterwegs, mit Python. Dies tut nun aber schon:

import socket
host = '0.0.0.0'
port = 5333
s = socket.socket()
s.connect((host,port))
s.send("gib mit precence")
print s.recv(256)
s.close()

Was kann ich nun an den socket senden? Wo finde ich das im perl code? Finde nicht den Einstiegspunkt um an der richtigen Stelle zu suchen.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10265
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #3 am: 14 September 2017, 10:35:46 »
Danke CoolTux.

TCP Socket war schon mal ein wichtiger Tipp. Ich bin eher auf den oberen Layern der Programmierung unterwegs, mit Python. Dies tut nun aber schon:

import socket
host = '0.0.0.0'
port = 5333
s = socket.socket()
s.connect((host,port))
s.send("gib mit precence")
print s.recv(256)
s.close()

Was kann ich nun an den socket senden? Wo finde ich das im perl code? Finde nicht den Einstiegspunkt um an der richtigen Stelle zu suchen.

Also Du sendest nichts an den Socket, sondern Du ließt ihn nur aus. Du musst nun in einer Schleife dafür sorgen das immer wieder geschaut wird ob Daten am Socket bereit stehen die abgeholt werden können.
« Letzte Änderung: 14 September 2017, 10:38:00 von 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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline gomez

  • New Member
  • *
  • Beiträge: 22
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #4 am: 14 September 2017, 10:45:19 »
Alles klar danke.

lepresenced sendet noch nix, muss ich erstmal schauen wie das alles zusammenhängt.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10265
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #5 am: 14 September 2017, 11:05:27 »
Es kann ja auch nicht senden. Es hält die Daten lediglich bereit das sie abgeholt werden können oder ausgelesen. und das sollte auf jeden Fall alle paar Sekunden sein. So 0.5s oder so denke ich mal.
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline gomez

  • New Member
  • *
  • Beiträge: 22
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #6 am: 14 September 2017, 11:28:11 »
Ok, nur das ich es richtig verstanden habe:

Dies läuft bei mir als systemd service
/usr/bin/perl /usr/sbin/lepresenced --daemon --device hci0 --listenaddress 0.0.0.0 --listenport 5333 --loglevel LOG_DEBUG

Es tut sich auch was:

root@xxx:~# tail -f /var/log/syslog | grep lepresenced
Sep 14 11:23:07 xx lepresenced[1084]: [tid:0] main::cleanup_task: Cleanup finished, deleted 0 devices in 0 seconds.
Sep 14 11:23:09 xx lepresenced[1084]: [tid:0] main::stats_task: Active clients: 0, known devices: 1 (min/max age: 785/785)

Er kennt mein NUT Tag, meint aber er ist nicht da (Active clients: 0), oder?

Hier stimmt was nicht, es sollten immer wieder mal daten kommen:
root@bert103:~# cat precence.py
import socket
host = '0.0.0.0'
port = 5333
s = socket.socket()
s.connect((host,port))
while True:
    data, addr = s.recv(1024)
    if data:
        buffer += data
        print buffer
    else:
        break

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10265
Antw:lepresenced daten nutzen außerhalb FHEM
« Antwort #7 am: 14 September 2017, 12:42:41 »
Also wenn ich das richtig verstehe scannt lepresenced permanent und hält alle Ergebnisse vor. So verstehe ich das jedenfalls.
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

 

decade-submarginal