Amazon Dash Button

Begonnen von gloob, 31 August 2016, 08:20:07

Vorheriges Thema - Nächstes Thema

justme1968

stimmt. das define habe ich korrigiert.

die meldung gibt es wenn das modul das socket nicht auf machen kann. wenn das der fall ist sollte es eigentlich eine fehlermeldung geben die da stehen sollte. bei dir gibt es zwar einen fehler, aber keine meldung.

auf welchem system machst du das?
läuft dein fhem als root?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Nein, keine Meldung.

Läuft auf einem Atom Nettop mit Ubuntu Server (aktuell).
Fhem hat eigentlich root Zugriff.
FHEM im Proxmox Container

justme1968

eigentlich ?

zeig mal bitte ein list vom device.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

fhem hat root access

List wird dir nicht viel bringen, da steht nichts  ???
Internals:
   CFGFN
   NAME       DashButton
   NR         13775
   NTFY_ORDER 50-DashButton
   STATE      ???
   TYPE       dash_dhcp
Attributes:


Liegt es daran, dass ich noch keine MAC Adressen definiert habe?
FHEM im Proxmox Container

justme1968

das modul kann port 67 nicht auf machen und es gibt keine meldung über den grund.

Zitatfhem hat root access
heisst das fhem läuft als root?

läuft auf dem gleichen rechner ein dhcp server?

was passiert wenn du das port attribut auf einen freien port < 1024 setzt? was bei einem port >1024 ?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

nein, aber der user fhem hat root Rechte.

Nein, kein DHCP Server.

Port < 1024 = Fehlermeldung
Port > 1024 = keine Fehlermeldung und state=listening
FHEM im Proxmox Container

justme1968

#141
Zitataber der user fhem hat root Rechte.
was meinst du damit? er hat definitiv nicht das recht den port 67 auf zu machen.

entweder per iptables regel von oben den port auf umbiegen und das port attribut passend setzen oder fhem das recht geben den port 67 zu öffnen.

ps: ich habe die version hier: https://forum.fhem.de/index.php/topic,57248.msg488553.html#msg488553 noch mal aktualisiert. es sollte zumindest die perl warnung nicht mehr auftauchen. das ändert aber nichts am prinzipiellen problem das der port nicht aufgemacht werden kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Danke Andre.

Keine Ahnung, warum fhem den Port nicht öffnen darf, da muss ich nochmal ran.
Habe jetzt iptables angelegt und den Port umgeleitet.

Danke!
FHEM im Proxmox Container

simonberry

Hallo Wzut,

danke für Deine Antwort, leider klappt das nicht. Es bleibt weiterhein auf error stehen,...

Ich werde wohl auch erstmal einen anderen Weg einschlagen...

Grüße Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

cyablo

Zitat von: justme1968 am 06 September 2016, 13:15:11
edit: es müsste zwei möglichkeiten geben um die root einschränkung zu umgehen:

- iptables -A PREROUTING -t nat -i eth0 -p udp --dport 67 -j REDIRECT --to-port 6767
  den port 67 auf 6767 umleiten und darauf lauschen

Klappt leider nicht, hast du das getestet gehabt? Requests kommen weiterhin auf Port 67 an.

justme1968

ja. bei meinem test ging es und es haben auch schon andere hier im thread verwendet.

- wie kommst du darauf das es nicht klappt?
- woran siehst du das die request noch auf 67 ankommen?
- stimmt eth0?
- hast du im modul das port attribut auf 6767 gesetzt?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cyablo

Zitat von: justme1968 am 13 September 2016, 18:39:39
ja. bei meinem test ging es und es haben auch schon andere hier im thread verwendet.

- wie kommst du darauf das es nicht klappt?
- woran siehst du das die request noch auf 67 ankommen?
- stimmt eth0?
- hast du im modul das port attribut auf 6767 gesetzt?

Na weil die Request noch immer auf Port 67 rein laufen und nicht 6767 :)

tcpdump -i eth0 'port 67' zeigt mir die reinlaufenden Request an, auf 6767 kommt nichts, eth0 ist korrekt.

Beispiel.

iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:67 redir ports 6767


tcpdump -i eth0 'port 67'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:26:11.261590 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 50:f5:da:7e:bb:94 (oui Unknown), length 261
19:26:11.757078 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 50:f5:da:7e:bb:94 (oui Unknown), length 261


Auf Port 6767 tut sich entsprechend nichts.

justme1968

#147
tcpdump zeigt auch bei umgeleitetem port noch die original ziel an und nicht die umleitung. es sitz sozusagen zwischen kabel und den iptables.

nimm das modul mit port 6767 und setz verbose 5, dann solltest du etwas sehen.

oder diesen stand allone test:use strict;
use warnings;

use IO::Socket::INET;

my $socket = IO::Socket::INET->new(LocalPort=>6767, Proto=>'udp', Broadcast=>1, ReuseAddr=>1, ReusePort=>defined(&ReusePort)?1:0);
print "$@\n";

while( 1 ) {
  my ($datagram,$flags);

  $socket->recv($datagram,1024,$flags);
  print "Got message from ", $socket->peerhost, ":", $socket->peerport, "\n";

  my $hex = unpack('H*', $datagram);
  print "$hex\n";

  my ($op, $htype, $hlen, $hops, $xid, $secs, $flags ) = unpack ( 'CCCCNnn', $datagram );
  my $ciaddr = join '.', unpack ('C4', substr($datagram, 12 ) );
  my $yiaddr = join '.', unpack ('C4', substr($datagram, 16 ) );
  my $siaddr = join '.', unpack ('C4', substr($datagram, 20 ) );
  my $giaddr = join '.', unpack ('C4', substr($datagram, 24 ) );
  my $chaddr = join ':', unpack ('(H2)*', substr($datagram, 28, $hlen ) );
  print "  $op, $htype, $hlen, $hops, $xid, $secs, $flags, $ciaddr, $yiaddr, $siaddr, $giaddr, $chaddr\n";
}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cyablo

#148
Sorry, kein Verbose-Output, kein Output vom standalone Script:

perl test.pm
"my" variable $flags masks earlier declaration in same scope at test.pm line 18.


Button drücken, und dann, nichts...

justme1968

deine fhem ist im gleichen netz wie der dash button ?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968