Toon posts:

[python] Foutmelding: "No route to host"

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In mijn meterkast heb ik een raspberry pi 3 liggen waar ik domoticz op heb staan. ik wil met een python script file informatie en temperatuur naar mezelf mailen vlak voor dat ik naar mijn werk vertrek.
ik had een proof of consept werkend. (Ik heb nooit eerder een Python script gemaakt en dit is een oefen project) Het was mogelijk om de temperatuur van van domoticz te krijgen door het op vragen van een json.

Door een stroom storing veranderde mijn ip-adres. Dat is natuurlijk niet handig, dus heb ik geprobeerd het ipadres vast te zetten met de instructies van de volgende site:
http://raspberrypi.stacke...ng-wifi-static-ip-address

Dat lijkt gelukt te zijn ik heb nu het ip-adres dat ik heb uit gekozen. Vanaf andere apparaten kan ik domoticz ook weer bereiken op het juiste ip adres. als ik ping naar dat ip adress vanaf de rpi dan gaat dat goed

code:
1
2
3
4
pi@DomoticzServer:~/sendinfo $ sudo ping 192.168.2.11
PING 192.168.2.11 (192.168.2.11) 56(84) bytes of data.
64 bytes from 192.168.2.11: icmp_seq=1 ttl=64 time=0.224 ms
64 bytes from 192.168.2.11: icmp_seq=2 ttl=64 time=0.103 ms


maar als ik het script nu uitvoer krijg ik het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
pi@DomoticzServer:~/sendinfo $ python main.py
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    print info.getTemp("temp+vochtigheid")
  File "/home/pi/sendinfo/DomoInfo.py", line 16, in getTemp
    return self.getValue(fromDevice, "Temp") + "°C"
  File "/home/pi/sendinfo/DomoInfo.py", line 32, in getValue
    data = self.raw()
  File "/home/pi/sendinfo/DomoInfo.py", line 40, in raw
    response = urllib.urlopen(getUrl)
  File "/usr/lib/python2.7/urllib.py", line 87, in urlopen
    return opener.open(url)
  File "/usr/lib/python2.7/urllib.py", line 213, in open
    return getattr(self, name)(url)
  File "/usr/lib/python2.7/urllib.py", line 350, in open_http
    h.endheaders(data)
  File "/usr/lib/python2.7/httplib.py", line 1035, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 879, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 841, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 822, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
IOError: [Errno socket error] [Errno 113] No route to host


de code van het script waar het fout gaat is:
Python:
1
2
3
4
5
#!/usr/bin/python

import urllib, json

response = urllib.urlopen("http://192.168.2.11:8080/json.htm?type=devices&used=true&filter=all")


Omdat de code voor de stroomstoring en het vast zetten van het ip adres wel werkte zit het probleem waarschijnlijk niet in de code. Maar python doet schijnbaar iets anders dan de andere apparaten en ik hoop dat iemand hier mij kan vertellen waar ik het beste kan gaan zoeken.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 09-10 13:33
Kan het liggen aan het feit dat je de ping met admin rechten uitvoert (sudo) en het Python script niet? Volgens mij kan het opzetten van een socket geblokkeerd worden door rechten meen ik mij te herinneren. Wellicht het script eens met sudo runnen?

Lijkt me in ieder geval eerder een kwestie van netwerkconfig en niet zozeer je Python code.

[ Voor 16% gewijzigd door Morrar op 23-01-2017 21:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het script runnen met sudo helpt niet.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
De foutmelding is niet van het script dat je post.

Wat is de output van de volgende commands?
code:
1
2
3
route -n
iptables -L -nvx
iptables -t nat -L -nvx

[ Voor 34% gewijzigd door GlowMouse op 23-01-2017 21:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
2
3
4
5
pi@DomoticzServer:~/sendinfo $ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.254   0.0.0.0         UG    0      0        0 wlan0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0


code:
1
2
3
4
5
6
7
8
9
pi@DomoticzServer:~/sendinfo $ sudo iptables -L -nvx
Chain INPUT (policy ACCEPT 12 packets, 2090 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8 packets, 1328 bytes)
    pkts      bytes target     prot opt in     out     source               destination


code:
1
2
3
4
5
6
7
8
9
10
11
12
pi@DomoticzServer:~/sendinfo $ sudo iptables -t nat -L -nvx
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Daar staat niets vreemds. Wellicht dat je met strace kunt achterhalen waarom het mis gaat:
code:
1
strace python main.py 2>strace-output.txt

[ Voor 25% gewijzigd door GlowMouse op 23-01-2017 22:56 ]

Pagina: 1