User und PWsind beide im Klartext.
den Symcondienst neu starten nach PW-Änderung.? probier ich mal aus.
–
funktioniert ! Danke
es lag am fehlenden Neustart des Dienstes.
User und PWsind beide im Klartext.
den Symcondienst neu starten nach PW-Änderung.? probier ich mal aus.
–
funktioniert ! Danke
es lag am fehlenden Neustart des Dienstes.
Hallo Leute,
bei mir gibt es schon bei diesem Teil eine Fehlermeldung:
# notwendige Module importieren
import requests, json
from requests.auth import HTTPBasicAuth
...
Ist die Zeilenaufteilung im Python Skript bei Euch auch genau so??
Joachim
Hallo Leute,
bei mir kommt immer die Fehlermeldung:
File "GPIOinit.py", line 3, in <module>
from requests.auth import HTTPBasicAuth
ImportError: No module named requests.auth
habe jetzt schon diverse Sachen versucht dieses „requests-Modul“ zu installieren - bisher ohnre Erfolg…
Jemand einen Tipp?
Joachim
sudo apt-get install python-requests hat nicht geklappt?
Edit: und schreib mal alles in eine Zeile; so klappts in meinen Python-Skripten. [emoji4]
Und noch einen: „import requests“ hast Du auch drin?
Ja…
Habe schon Python Update auf 3.2 gemacht, diverse andere Sachen versucht…
Joachim
Nachtrag: Den Tipp mit „sudo apt-get install python-requests“ hatte ich erst gerade gesehen! Jetzt kommt eine andere Fehlermeldung - da muss ich erst mal schauen…
…es funktioniert hier einfach nicht…
Code:
import requests, json
from requests.auth import HTTPBasicAuth
# JSON-RPS zu IPS definieren
def IpsRpc(methodIps, paramIps):
url = "http://127.0.0.1:3777>/api/"
auth=HTTPBasicAuth('user@ips.de', 'Password') # username nicht codiert, bsp. johndoe@unknown.net
headers = {'content-type': 'application/json'}
payload = {"method": methodIps, "params": paramIps, "jsonrpc": "2.0", "id": "0"}
response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers)
variable=29419
value="abc"
IpsRpc("SetValue", [variable,value])
Fehlermeldung:
Traceback (most recent call last):
File "GPIOinit.py", line 36, in <module>
IpsRpc("SetValue", [variable,value])
File "GPIOinit.py", line 17, in IpsRpc
response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 94, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 443, in request
prep = self.prepare_request(req)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 374, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/usr/lib/python2.7/dist-packages/requests/models.py", line 304, in prepare
self.prepare_url(url, params)
File "/usr/lib/python2.7/dist-packages/requests/models.py", line 354, in prepare_url
scheme, auth, host, port, path, query, fragment = parse_url(url)
File "/usr/lib/python2.7/dist-packages/urllib3/util/url.py", line 143, in parse_url
raise LocationParseError(url)
urllib3.exceptions.LocationParseError: Failed to parse: 127.0.0.1:3777>
…habe es mit diversen Hinweisen auf dem Thread probiert (mit und ohne „.json“, die payload-Daten in einer oder in mehreren Zeilen…)
Wo liegt der Hund begraben??
Joachim
Ganz einfach: mach mal das „>“ aus der URL von IPS. [emoji2]
…ja, das hatte ich wohl übersehen…
…jetzt kommt aber diese Fehlermeldung:
Traceback (most recent call last):
File "GPIOinit.py", line 3, in <module>
import requests, json
File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 80, in <module>
from . import utils
File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 25, in <module>
from .compat import parse_http_list as _parse_list_header
File "/usr/lib/python2.7/dist-packages/requests/compat.py", line 81, in <module>
import json
File "/home/pi/json.py", line 3, in <module>
from requests.auth import HTTPBasicAuth
File "/usr/lib/python2.7/dist-packages/requests/auth.py", line 17, in <module>
from .compat import urlparse, str
ImportError: cannot import name urlparse
Joachim
Hast Du bei Dir die erste Zeile drin? Also dass das Skript mit Python ausgeführt werden soll?
…mit oder ohne Zeile - gleiches Problem…
Im Übrigen: Mein Ziel ist offenbar das Gleiche. Ich wollte meine GPIO-Steuerung auch mal auf „universelle Füße“ stellen. Wenn alles klappt sollte dann daraus ein Modul entstehen. Ich nutze aber pigpio, damit kann man dann auch GPIO im gleichen Netzwerk steuern.
Aber an so manch einem „Teilproblem“ bastelt man dann schnell mal so ein paar Tage…
Joachim
…mag vielleicht einer mal sein funktionierendes Skript in Gänze posten und ggf. Mal sagen was noch zusätzlich installiert werden muss?
Joachim
Mach ich morgen gern; Zeit ist grad immer nur so knapp…
…wäre toll!
Ich habe es jetzt noch mal auf einem anderen Raspberry Pi probiert - leider mit gleicher Fehlermeldung. Die Google-Suche nach „ImportError: cannot import name urlparse“ brachte für mich keine erhellenden Ergebnisse.
Komisch, ich habe Jessie installiert und immer aktuell gehalten…
Joachim
Hallo Joachim,
hier mal mein Skript:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import requests
import json
from requests.auth import HTTPBasicAuth
import time
import Adafruit_DHT
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(9, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# JSON-RPC zu IPS definieren
def IPSrpc(methodIps, paramIps):
url = "http://192.168.0.10:3777/api/"
auth=HTTPBasicAuth('xxx@xxx.de', 'passwort')
headers = {'content-type': 'application/json'}
payload = {
"method": methodIps,
"params": paramIps,
"jsonrpc": "2.0",
"id": "0",
}
response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers).json
#print(response)
# Callback functions
def my_callback05(channel):
IPSrpc("SetValue", [16624, bool(GPIO.input(7))])
def my_callback06(channel):
IPSrpc("SetValue", [20723, bool(GPIO.input(8))])
def my_callback12(channel):
IPSrpc("SetValue", [32958, bool(GPIO.input(9))])
def my_callback13(channel):
IPSrpc("SetValue", [56070, bool(GPIO.input(10))])
def my_callback16(channel):
IPSrpc("SetValue", [45232, bool(GPIO.input(11))])
def my_callback19(channel):
IPSrpc("SetValue", [32046, bool(GPIO.input(17))])
def my_callback20(channel):
IPSrpc("SetValue", [43085, bool(GPIO.input(22))])
def my_callback21(channel):
IPSrpc("SetValue", [29786, bool(GPIO.input(23))])
def my_callback26(channel):
IPSrpc("SetValue", [34756, bool(GPIO.input(24))])
def my_callback24(channel):
IPSrpc("SetValue", [14855, bool(GPIO.input(27))])
# Add interrupts
GPIO.add_event_detect(7, GPIO.BOTH, callback=my_callback05)
GPIO.add_event_detect(8, GPIO.BOTH, callback=my_callback06)
GPIO.add_event_detect(9, GPIO.BOTH, callback=my_callback12)
GPIO.add_event_detect(10, GPIO.BOTH, callback=my_callback13)
GPIO.add_event_detect(11, GPIO.BOTH, callback=my_callback16)
GPIO.add_event_detect(17, GPIO.BOTH, callback=my_callback19)
GPIO.add_event_detect(22, GPIO.BOTH, callback=my_callback20)
GPIO.add_event_detect(23, GPIO.BOTH, callback=my_callback21)
GPIO.add_event_detect(24, GPIO.BOTH, callback=my_callback26)
#GPIO.add_event_detect(27, GPIO.BOTH, callback=my_callback24)
# Initial States
IPSrpc("SetValue", [16624, bool(GPIO.input(7))])
IPSrpc("SetValue", [20723, bool(GPIO.input(8))])
IPSrpc("SetValue", [32958, bool(GPIO.input(9))])
IPSrpc("SetValue", [56070, bool(GPIO.input(10))])
IPSrpc("SetValue", [45232, bool(GPIO.input(11))])
IPSrpc("SetValue", [32046, bool(GPIO.input(17))])
IPSrpc("SetValue", [43085, bool(GPIO.input(22))])
IPSrpc("SetValue", [29786, bool(GPIO.input(23))])
IPSrpc("SetValue", [34756, bool(GPIO.input(24))])
IPSrpc("SetValue", [14855, bool(GPIO.input(27))])
try:
while True:
start_time = time.time()
sensor = Adafruit_DHT.DHT22
humidity, temperature = Adafruit_DHT.read_retry(sensor, 4)
#print(temperature)
IPSrpc("SetValue", [37107, temperature])
IPSrpc("SetValue", [22609, humidity])
end_time = time.time()
delay = float(end_time - start_time)
time.sleep(60 - delay)
except KeyboardInterrupt:
GPIO.cleanup()
GPIO.cleanup() # clean up GPIO on normal exit
Das läuft auf zwei PI´s mit Jessie Lite. Musste nur „python requests“ nachinstallieren; mehr nicht.
Ich hoffe, es hilft Dir weiter.
Vielen Dank!
Jedoch leider das Gleiche in grün…
Fehlermeldung:
Traceback (most recent call last):
File "json.py", line 4, in <module>
import requests
File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 80, in <module>
from . import utils
File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 25, in <module>
from .compat import parse_http_list as _parse_list_header
File "/usr/lib/python2.7/dist-packages/requests/compat.py", line 81, in <module>
import json
File "/home/pi/json.py", line 6, in <module>
from requests.auth import HTTPBasicAuth
File "/usr/lib/python2.7/dist-packages/requests/auth.py", line 17, in <module>
from .compat import urlparse, str
ImportError: cannot import name urlparse
Vielleicht ist irgendetwas mit der requests-Installation falsch gelaufen? Wie hast Du es installiert?
Joachim
So wie ich es weiter oben schon geschrieben hatte; mit sudo apt-get install python-requests…
…wenn ich das mache, ist die Meldung: Alles gut, alles aktuell…[emoji17]
Schau mal hier: python - ImportError: Cannot import name X - Stack Overflow
Hast Du noch mehr in deinem Skript drin?