Autor Thema: automatisches erkennen von geräten im netzwerk  (Gelesen 1749 mal)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16615
automatisches erkennen von geräten im netzwerk
« am: 18 Februar 2017, 20:03:48 »
ich spiele gerade mit dem gedanken für ein modul das alle durch fhem steuerbaren geräte im lokalen netz anzeigt und per kopfdruck ein passendes device dafür anlegt. wenn man so etwas direkt auf der start seite einer neuen fhem installation anbietet könnte das den einstieg erleichtern. einige der 'anderen' home automation systeme bieten so etwas an und es macht glaube ich schon etwas her wenn man das gut hin bekommt.

mein problem ist gerade nicht die erkennung an sich. die geht schon für sonos, fritzbox, hue bridge, plex, unifi und einigen anderen.

sondern wie man den code modularisiert so das jedes modul seine eigene such routine mit bringen kann. so etwas ins modul selber z.b. in eine serachFn einzubauen wäre zwar naheliegend, aber leider nutzlos da noch nicht verwendete module natürlich noch nicht geladen sind.

d.h. die frage ist: wie kommt man an eine modul spezifische routine ohne jeweils alle module zu laden und ohne ein zweites file pro modul zu haben.

hat jemand ideen dazu ?

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 3710
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #1 am: 18 Februar 2017, 21:03:06 »
FHEM-Befehl search oder so, der alle Module lädt und die searchFn aufruft?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16756
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #2 am: 18 Februar 2017, 21:15:43 »
Alle Module zu laden ist problematisch, da einige komische Perl-Module brauchen.
Man koennte sie natuerlich als Datei durchsuchen, und im XXX_Iniitalize nach einem SearchFn suchen.
Was ich nicht verstehe: die meisten Netzwerkgeraete sollten ein Passwort haben. Wei geht man damit um?

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13253
  • Das "S" in "IoT" steht für "Security"
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #3 am: 18 Februar 2017, 21:31:06 »
Was ich nicht verstehe: die meisten Netzwerkgeraete sollten ein Passwort haben.

die wenigsten Netzwerkgeräte, um die es hier vermutlich geht, haben ein Passwort.
Nächster Hamburg-Stammtisch: 15.09.2017, 18:30 Uhr, Weinkeller im Hotel Baseler Hof, Esplanade 11, Hamburg

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16615
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #4 am: 18 Februar 2017, 21:37:56 »
das erkennen ist unabhängig von irgendwelchen passwörtern oder sonstigen credentials.

geräte lassen sich z.b. per upnp bzw. ssdp oder bonjour oder anderen geräte spezifischen broadcast nachrichten finden. das sind erst mal nur allgemeine dinge wie: ich bin hier, bin vom typ xy, mein name ist xz und vielleicht noch ein icon.

die eigentliche anmeldung ist dann geräte spezifisch gesichert und muss vom modul gehandhabt werden.

sonos braucht tatsächlich kein password. das trifft vermutlich für die meisten media player zu. auf der hue bridge musst du den pairing button drücken, für die fritzbox musst du ein password angeben, plex musst du per myplex account oder pin frei geben, die harmony remotes haben aktuell kein password, ...

FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Icinger

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1041
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #5 am: 18 Februar 2017, 21:45:52 »
Zitat
ein modul das alle durch fhem steuerbaren geräte im lokalen netz anzeigt und per kopfdruck ein passendes device dafür anlegt.
Wäre das nicht am logischsten im Rahmen des Autocreate aufgehoben?
Ist ja im Prinzip nix anderes, nur eben auf Netzwerk-Basis statt USB.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16615
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #6 am: 18 Februar 2017, 21:55:06 »
wo es genau landet ist noch offen. im gegensatz zum usb autocreate soll auf jeden fall dazu kommen:

- modularer aufbau, module können ihren eigenen erkennungs code mitbringen
- erkennung über spezifische such routinen passieren. nicht über bloßes rum probieren
- gui das erkannte geräte anzeigt
- autocreate erst auf knopfdruck und mit benutzer interaktion um z.b. passwörter oder andere parameter einzugeben

wenn das dann irgendwann mal funktioniert könnte man überlegen ob man das usb autocreate auch modularisiert.

ein wichtiger unterschied ist das durch die geräte spezifische netzwerk suche keine probleme auftreten sollten wie sie durch das einfache öffnen aller usb devices passieren kann wenn ein gerät nicht damit klar kommt.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3102
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #7 am: 19 Februar 2017, 03:37:19 »
Ich meine mich zu erinnern, dass es im Forum mehrfach den Versuch eines UPNP-Moduls zu machen, was eben genau nach FHEM-bekannten Geräten per Broadcast sucht und diese dann via Autocreate anlegt.

Generell ist jedoch das gleiche Problem wie im zweistufigen Modulkonzept. Ohne alle Module in FHEM aktiv zu laden, sind die modulspezifischen Erkennungsroutinen nicht verfügbar und müssen daher in dem entsprechenden Modul implementiert werden oder zumindest in einer zusätzlichen Mapping-Table als separates *.pm File wie bspw. bei HMConfig.pm.

Man müsste zumindest eine Art Match-Regexp für jedes Modul kennen, woran man eine Discover-Antowrt von z.B. einem SONOS Gerät erkennt. Anschließend wird SONOS geladen und bspw. eine DiscoverFn ausgeführt mit den empfangenen Daten, so dass SONOS weitere Parameter extrahieren kann um die Geräte per autocreate anzulegen.

Gruß
Markus

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3899
  • Finger weg von der fhem.cfg
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #8 am: 19 Februar 2017, 09:04:33 »
Hi,
d.h. die frage ist: wie kommt man an eine modul spezifische routine ohne jeweils alle module zu laden und ohne ein zweites file pro modul zu haben.
meiner Meinung nach ist das schon ein Widerspruch in sich. Ok, man könnte die Dateien wie vorgeschlagen nach einer bestimmten Routine scannen und dann erst laden. ...naja.
Warum wäre es eigentlich so schlimm, mehrere Datein pro Modul zu haben? Wenn man das ganze schön ordnet, dann wäre es gar nicht so schlimm, wenn man mehrere Dateien erlaubt. Z.B. könnte man statt der flachen Liste in <fhem>/FHEM erlauben, dass es Unterverzeichnisse zum jeweiligen Modul gibt.
Alternativ könnte man auch Unterverzeichnisse für verschiedene Aspekte hinzufügen, so wie es z.B. auch für FHEMWEB und TabletUI gemacht wurde. Was spräche z.B. gegen ein Verzeichnis <fhem>/autocreate, in dem modulspezifische Autocreate-Routinen stecken?

Gruß,
   Thorsten

RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16615
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #9 am: 19 Februar 2017, 11:09:13 »
@rudi: das irgendwelchen speziellen perl module gebraucht werden wäre kein problem. diese devices würden dann eben nicht automatisch geladen. man müsste auch nicht alle fhem module automatisch laden sondern nur die bei denen es eine discoveryFn gibt.

@Markus Bloch: mit einer art match list ist es leider nicht getan. die module müssen die möglichkeit haben die komplette routine zu implementieren weil das ganze nicht nur mit upnp/ssdp funktionieren soll sondern auch mit anderen ports/adressen/methoden.

das DLNARenderer renderer modul wäre auch ein kandidat für so ein neues nicht blockierendes discovery modul. aktuell wartet es blockierend 1-2minuten. mit dem discovery modul könnte man das nicht blockierend und dynamisch machen und für jedes device das neu erscheint oder sich abmeldet ein event erzeugen.

@Thorsten Pferdekaemper: das ist nicht unbedingt ein widerspuch. man könnte z.b. den modul code nach der entsprechenden routine scannen und nur diese per eval ausführen. das ist halt nicht sehr elegant und je nach kreativität des modulautors muss man eventuell recht viel perl parser implementieren.

ein eigenes unterverzeichniss wäre eine möglichkeit, allerdings würde man dann den code der module läd duplizieren oder zumindest erweitern müssen um diese routinen zu laden. eventuell wird auch code zwischen dem modul und der discovery routine dupliziert.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13253
  • Das "S" in "IoT" steht für "Security"
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #10 am: 19 Februar 2017, 12:39:50 »
Eine 99_disccoveryUtils.pm, in die alle modulspezfischen discoveryFn() von den zuständigen Modulautoren eingepflegt werden?
Nächster Hamburg-Stammtisch: 15.09.2017, 18:30 Uhr, Weinkeller im Hotel Baseler Hof, Esplanade 11, Hamburg

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16615
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #11 am: 19 Februar 2017, 12:43:51 »
ja. daran hatte ich auch schon gedacht. es käme vermutlich auch einen versuch an wie gut das klappt.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3899
  • Finger weg von der fhem.cfg
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #12 am: 19 Februar 2017, 20:37:58 »
Hi,
warum dann nicht gleich 99_discovery<Modulname>.pm ?
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13253
  • Das "S" in "IoT" steht für "Security"
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #13 am: 19 Februar 2017, 20:41:07 »
Weil es keinen Sinn macht, eine Unzahl von Moduldateien auszuliefern, die beim FHEM Start alle automatisch geladen werden und jeweils nur eine einzige Funktion beinhalten.
Nächster Hamburg-Stammtisch: 15.09.2017, 18:30 Uhr, Weinkeller im Hotel Baseler Hof, Esplanade 11, Hamburg

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3899
  • Finger weg von der fhem.cfg
Antw:automatisches erkennen von geräten im netzwerk
« Antwort #14 am: 19 Februar 2017, 20:47:56 »
Warum?
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)