nodo-domotica.nl

Direct lamp schakelen dmv http commando

Post hier vragen en ervaringen die betrekking hebben op het gebruik en configuratie van de WebApp

Direct lamp schakelen dmv http commando

Berichtdoor svdstoep » 03 okt 2015, 06:57

Sinds kort gebruik ik de nieuwe WebApp, maar zit te worstelen met iets wat ik op de oude wel werkend had.

Op mijn smartphone heb ik aantal icoontjes gemaakt welke bij aanklikken direct een HTTP get starten, in deze HTTP request staat een commando op het licht aan/uit te schakelen. Helaas werkt dit niet direct op de nieuwe WebApp. Heeft iemand een idee of ik hier een ander commando voor moet gebruiken of werkt dit gewoon niet meer?

http://adres/webapp/nodo.php?actie=nodo ... KAKUSend+4
svdstoep
 
Berichten: 47
Geregistreerd: 14 dec 2012, 06:17

Re: Direct lamp schakelen dmv http commando

Berichtdoor FredBlume » 06 okt 2015, 11:08

Ik ben er ook al een tijdje mee aan het stoeien, want ik wil uiteindelijk de NODO zelf deels kunnen aansturen/uitlezen met eigen software.

De nieuwe webapp werkt met een api en Slim middleware. Documentatie is er niet echt en je moet de webapp code doorspitten om een idee te krijgen hoe het werkt.
Zie https://webapp.nodo-domotica.nl/api/ voor overzicht commando's.

Aangezien ik de nieuwe webapp (nog) niet lokaal geïnstalleerd heb, zit ik nog wat te stoeien op de NODO server. Inloggen lukt wel, maar dan..... Als je de nieuwe webapp lokaal geïnstalleerd hebt zou je het volgende eens kunnen proberen.

https://webapp.nodo-domotica.nl/api/cmdsend/NewKAKUSend 2,On

Ik heb via de ontwikkelaars tools (Netwerk) in Firefox en door in te loggen op de nieuwe web het commando NewKAKUSend 2,On ingetoetst en het netwerkverkeer gevolgd.
Ik kreeg een 500 internal server error, maar dat is waarschijnlijk het gevolg dat ik er nog geen NODO aan heb hangen. Verder zie ik dat er tussen client en server gecommuniceerd wordt via JSON.

Commando zou volgens de api met POST methode verstuurd moeten worden.
Je zou dit eventueel via php en curl kunnen doen, waarbij je zelf dan via een http get request een commando stuurt naar je php code die een post httprequest via curl verstuurd.
Hopelijk kan het allemaal makkelijker, maar het lijkt nu meer op trial-en-error werken.

Hopelijk heb je hier wat aan of kom je een stap verder dan ik.
Ik hoor graag als je iets werkend hebt.

Groeten,

Fred
FredBlume
 
Berichten: 4
Geregistreerd: 13 mei 2014, 12:01

Re: Direct lamp schakelen dmv http commando

Berichtdoor konti » 05 dec 2015, 16:14

Hi,

Ik ben met iets vergelijkbaars bezig geweest. En heb het min of meer wel werkend.
Ik gebruik python icm requests libs een post te sturen. Echter moet je op een aantal zaken letten:
1. Je hebt een TOKEN cookie nodig, die krijg je na het inloggen.
2. Bij je tweede request waarbij je, newKAKUSend stuurd, moet je BasicAuthentication header mee sturen. Het berekenen daarvan ben ik nog mee bezig, maar volgens mij is ie redelijk statisch. Dus je kan hem ook uit je chrome dev tools of fiddler halen.

Dus als iemand nog tips voor mij heeft m.b.t. het creeëren van de Authentication header.. graag!

Volgende python script werkt nu wel bij, met ingevulde credentials:
Code: Selecteer alles
import requests
import json

NODO_HOST = "192.168.178.21"
NODO_TOKEN = ""
NODO_ID = ""
NODO_USERNAME = "admin@webapp.local"
NODO_PASSWORD = "admin"
URL_NODO_LOGIN = "http://%s/webapp/api/login" % (NODO_HOST)
NODO_DEVICE_ID = 1
ON = "On"
OFF = "Off"

URL_NODO_API = "http://%s/webapp/api/cmdsend/NewKAKUSend%%20%s,%s" % (NODO_HOST, NODO_DEVICE_ID, ON)

TURN_ON_LIVVING = "http://%s/webapp/api/cmdsend/NewKAKUSend%%20%s,%s" % (NODO_HOST, NODO_DEVICE_ID, ON)
TURN_OFF_LIVVING =  "http://%s/webapp/api/cmdsend/NewKAKUSend%%20%s,%s" % (NODO_HOST, NODO_DEVICE_ID, OFF)

headers = { "Host" : "192.168.178.21",
"Connection": "keep-alive",
"Accept" : "application/json, text/javascript, */*; q=0.01",
"Origin" : "http://192.168.178.21",
"X-Requested-With" : "XMLHttpRequest",
"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
"Content-Type" : "application/json; charset=UTF-8",
"Referer" : "http://192.168.178.21/webapp/",
"Accept-Encoding" : "gzip, deflate",
"Accept-Language" : "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4" }

data = {"username":NODO_USERNAME,"password":NODO_PASSWORD,"savecred":1}

result = requests.post(URL_NODO_LOGIN,data=json.dumps(data),headers=headers,auth=(NODO_USERNAME,NODO_PASSWORD))
NODO_TOKEN = json.loads(result.text)['token']

if NODO_TOKEN:
    cookies = {"groupid" : "" , "groupname": "All Objects", "USERID" : "1", "USERNAME" : NODO_USERNAME, "TOKEN" : NODO_TOKEN}
    headers['Authorization'] = "Basic MTo5NWVkNTU2OTcwZTEyMmI1YWRjYjhhNDgwNWMzODEwZQ=="
    result = requests.post(TURN_OFF_LIVVING, headers = headers, cookies = cookies)
   
konti
 
Berichten: 6
Geregistreerd: 02 nov 2012, 16:07


Keer terug naar Nodo WebApp

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron