Opvangen (WiFi) signalen airco units

Pagina: 1 2 Laatste
Acties:
  • 14.996 views

Vraag


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Iemand ervaring met het sniffen van (WiFi) commando's?

Ik heb 2 airco units die ik mbv een Airconwithe - app remote kan bedienen. Deze WiFi units zijn ingebouwd in de airco units. Nu lijkt het mij dat er op het moment dat ik een opdracht vanaf m'n iPhone verstuur, er een signaal opgevangen zou moeten kunnen worden die dan weer gebruikt kan worden.

Denk ik hierbij te simpel en moet er dan van alles nog uitgezocht, reverse-engineered, of wat-dan-ook gedaan worden?

¯\_(ツ)_/¯

Beste antwoord (via M.v.Veelen op 07-07-2018 23:44)


Verwijderd

Och, dit is opzich duidelijk. Nu alleen nog uitvinden welke actie welk ID heeft.

Ik dacht aan zoiets a.d.h.v. bovenstaande info (ongetest natuurlijk):
#!/usr/bin/env bash

#temp hardcoded ip
AIRCO_IP=192.168.0.37
#AIRCO_IP=192.168.1.1
COOKIE=$(mktemp)

#pseudo: login
LOGIN_RESPONSE=$(mktemp)
wget --save-cookies ${COOKIE} \
     --keep-session-cookies \
     --post-data "{\"command\":\"login\",\"data\":{\"username\":\"operator\",\"password\":\"operator\"}}" \
     --output-document=${LOGIN_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'login','data':{'username':'operator','password':'operator'}}" \

#pseudo: get sessionID from login
SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')

#pseudo: set value on airco
ACTION_RESPONSE=$(mktemp)
wget --load-cookies ${COOKIE} \
     --post-data "{\"command\":\"setdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":1,\"value\":1}}" \
     --output-document=${ACTION_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'setdatapointvalue','data':{'sessionID':'${SESSION_ID}','uid':1,'value':1}}" \

#pseudo: debugging
echo '-----------'
echo 'DEBUGGING'
echo '-----------'
echo "sessionID: [${SESSION_ID}]"
echo '-----------'
echo 'login response:'
cat ${LOGIN_RESPONSE}
echo '-----------'
echo 'action response:'
cat ${ACTION_RESPONSE}
echo '----------'

#cleanup
if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi


Nu dus alle verschillende acties nog uitvinden (on/off, set temperature, etc). Dan kan het scriptje wat netter/duidelijker gemaakt worden.

[ Voor 29% gewijzigd door Verwijderd op 07-07-2018 22:56 ]

Alle reacties


Acties:
  • +4 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Ja, ik vind het wel een goed idee dat je niet vermeldt over welk merk en type airco het hier gaat. Dat zou natuurlijk te makkelijk zijn ;)

Verder vind ik dit nogal vaag beschreven:
M.v.Veelen schreef op donderdag 5 juli 2018 @ 11:26:
Nu lijkt het mij dat er op het moment dat ik een opdracht vanaf m'n iPhone verstuur, er een signaal opgevangen zou moeten kunnen worden die dan weer gebruikt kan worden.
WiFi is een transportmiddel voor (TCP/?)IP. Vaak worden dit soort 'signalen' verstuurd over HTTP(S).
Dus je kunt doen is een network sniffer (zoals Wireshark) tussen je Airco en jouw device (ik zou een PC nemen) plaatsen en zo het verkeer 'afluisteren'.

Maar vertel eerst eens wat je precies probeert te bereiken?

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Doh, stom van me inderdaad. Het is een Airconwithme unit. De makelij van de airco doet er niet toe, omdat deze add-on wifi module apart is ingebouwd. Maar goed, het is een Mitsubishi airco die normaal via IR wordt bediend.

Het doel is om uiteindelijk een paar simpele commando's te kunnen sturen (On/Off, setpoint, fan speed) om zodoende in m'n huisautomatisering een aantal events in te kunnen bouwen. Bijvoorbeeld automatisch uitschakelen als we beiden van huis zijn, of inschakelen als de temp beneden een ingestelde waarde komt.

Ik denk wss te simpel en dacht dat dit wel "even" gedaan kon worden. Met Wireshark kan ik misschien iets vinden? Ga het gewoon proberen....

¯\_(ツ)_/¯


Acties:
  • +2 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 12-09 14:11
M.v.Veelen schreef op donderdag 5 juli 2018 @ 11:26:
Denk ik hierbij te simpel en moet er dan van alles nog uitgezocht, reverse-engineered, of wat-dan-ook gedaan worden?
Dat ligt eraan. Als het verkeer versleuteld is, of je het protocol niet snapt op basis van een capture dan zul je er dieper in moeten duiken. Maar een capture van het verkeer is een uitstekend begin.
Met Wireshark kan ik misschien iets vinden? Ga het gewoon proberen....
Wireshark is het juiste gereedschap, maar je moet het verkeer wel afvangen.

Gezien je een iPhone app hebt is de makkelijkste oplossing dek ik dit of dit.

Dat is, aangenomen dat je direct met je airco's babbelt. Bij een clouddienst zou het wel eens handig kunnen zijn om ook de communicatie van de airco's te zien, dan zul je WiFi moeten sniffen...

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
M.v.Veelen schreef op donderdag 5 juli 2018 @ 11:39:
[...]

Ik denk wss te simpel en dacht dat dit wel "even" gedaan kon worden. Met Wireshark kan ik misschien iets vinden? Ga het gewoon proberen....
Ja, of misschien hebben ze een open API. Maar dat verwacht ik niet, want dat is hun 'selling point'.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Wireshark vindt niets op het IP adres van de (wifi unit van de) airco. Het is idd geen clouddienst, er wordt rechtstreeks gecommuniceerd. Intesis.com heeft de mogelijkheid van IFTT, maar de versie die ik heb is daar een uitgeklede versie van. Ik heb contact met Intesis gehad en ze denken er wel over om een upgrade aan te gaan bieden, maar OF dit gaat gebeuren of wanneer...dat weten ze nog niet. Dus erop wachten heeft geen zin, vandaar dat ik zoekende ben. Ik ga de 2 andere tips nog eens proberen (als me dat lukt, want het valt mss niet op, maar ik ben een n00b op dit gebied, hahaha).

Edit:

als ik in een browser het IP adres inklop, dan krijg ik een webserver te zien. Ik kan daar inloggen als user: Admin of als user: Operator. Van beide geen wachtwoord. Hmmmm, wat zou daarachter verborgen zitten :-) ?

[ Voor 16% gewijzigd door M.v.Veelen op 05-07-2018 12:08 ]

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • Hackus
  • Registratie: December 2009
  • Niet online

Hackus

Lifting Rusty Iron !

@M.v.Veelen Ik kan me voorstellen dat je twee AC units nodig hebt, met dat dansen de hele dag :P

Kiest als MTB' er voor het mulle zand en drek, ipv het naastgelegen verharde pad.


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Kun je alleen de airco verbinden als je op hetzelfde wifi zit? Of ook als je buiten op 4G zit.

Als je nog een MAC computer hebt kun je hiermee relatief eenvoudig http traffic sniffen:
https://blog.websecurify..../ios-packet-sniffing.html

Verder is via een proxy de meest eenvoudige methode (maar dit werkt niet altijd):

https://stanfy.com/blog/m...pp-traffic-with-sniffers/

[ Voor 68% gewijzigd door laurens0619 op 05-07-2018 12:47 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik kan van buitenaf de airco bedienen met de app. Je verbindt eerst met het WiFi netwerk van de airco, vervolgens stel je daar de SSID en ww van je eigen netwerk in en dan is deze vervolgens verbonden met je WiFi netwerkt. Je scant de code van de unit en klaar.

Ik heb net de inloggegevens ontvangen om via de webpagina in te loggen en het blijkt dat daar een hele pagina is met instellingen die je daar kunt aanpassen. Bijvoorbeeld:

On/Off
User Mode
Fan Speed
Vane Up/Down Position
User Setpoint

Ik kan daar mbv een drop-down menu de waardes aanpassen, per item op SAVE klikken en de pagina reload elke 30 sec. Ik zie inderdaad in mijn app dat de unit aan gaat, de temperatuur verandert en ook dat de Fan Speed anders is als ik die wijzig.

Met Wireshark zie ik elke 30 seconden dan wel wat voorbij komen en ik herken ergens wel een JSON, maar kan er verder geen touw aan vastknopen. Ik kan me zo voorstellen dat mbv een bepaalde URL waarin alle waardes worden meegegeven, de unit de opdracht ontvangt en uitvoert.

So close.....( ? )

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 10-09 12:08
Ik kan van buitenaf de airco bedienen met de app
maw, je airco haalt dus zelf uit een of andere cloud dienst iedere 30 seconden z'n settings op; de app op je telefoon zet die waardes in de cloud dienst, waarschijnlijk via een of andere API call met wat autenticatie. De enige manier voor jou om dat te modificeren is reverse engineren wat je telefoon precies aanroept bij die dienstverlener.

Je kan eventueel met iets als fiddler ook zorgen dat je SSL verkeer gedecrypt kan volgen


waarbij ik even miste dat je dus blijkbaar ook een interne webserver op die unit hebt draaien; mogelijk dat je die wél eenvoudiger kan manipuleren met wat creatieve calls

[ Voor 14% gewijzigd door _-= Erikje =-_ op 05-07-2018 15:06 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Het is inderdaad een interne webserver. Als ik de On/Off keuze maak en op SAVE druk, dan wordt dit direct verwerkt / verstuurd. Het refreshen van de pagina dient wss alleen om de R waardes op te halen, dus bijv. de kamertemperatuur of de buitentemperatuur.

Het verkeer is niet encrypt zo te zien, de browser geeft aan: niet beveiligd

Nu nog zien op te vangen wat exact de JSON call is.....

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
M.v.Veelen schreef op donderdag 5 juli 2018 @ 15:43:
Het is inderdaad een interne webserver. Als ik de On/Off keuze maak en op SAVE druk, dan wordt dit direct verwerkt / verstuurd. Het refreshen van de pagina dient wss alleen om de R waardes op te halen, dus bijv. de kamertemperatuur of de buitentemperatuur.
Wauw, je doet wel allemaal boude uitspraken maar ik twijfel of je weet wat je zegt :) Je zegt dat je de airco over 4G kunt bedienen, maar dat het wel een interne webserver betreft. Zou het dan kunnen zijn dat er toch een cloud-koppeling is? Of heb je een poort opengezet (geforward) op je router? :)
Het verkeer is niet encrypt zo te zien, de browser geeft aan: niet beveiligd
Staat er https:// in de adresbalk of http:// (of niks)? Als het een self-signed certificate is, geeft de browser dezelfde melding over de beveiliging.
M.v.Veelen schreef op donderdag 5 juli 2018 @ 12:02:
Wireshark vindt niets op het IP adres van de (wifi unit van de) airco. [...]
Dit is er ook zo een. Je geeft zelf aan een noob te zijn, dus vandaar mijn scepsis. Maar heb je met Wireshark wel tussen de airco en de telefoon gezeten (dan wel op andere manier het verkeer ontvangt)? Anders is het hetzelfde als thuis de telefoon oppakken en het raar vinden dat je niet het gesprek van de buren af kunt luisteren ;)

Dus kun je eens vertellen waar je het allemaal op baseert?

[ Voor 4% gewijzigd door Room42 op 05-07-2018 18:19 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
De airco zou toch ook prima beide kunnen doen? Interne webserver(direct) en cloud koppeling(30sec sync). Verder ben ik het met @Room42 eens dat het je wel erg goed afgaat voor een noob :) of je doet jezelf tekort of je doet de verkeerde interpretatie van wat je ziet

Makkelijkste is de webserver te gebruiken.
Met firebug/developer console/tamper data kun je makkelijk de requesy afvangen.
Eerst moet je het login request capturen (daarmee krijg je sessie)
Daarna moet je de actie hebben

Dit kun je daarna programmeren in de domotica tool naar keuze.

[ Voor 9% gewijzigd door laurens0619 op 05-07-2018 18:47 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Room42 schreef op donderdag 5 juli 2018 @ 18:06:
[...]
Wauw, je doet wel allemaal boude uitspraken maar ik twijfel of je weet wat je zegt :) Je zegt dat je de airco over 4G kunt bedienen, maar dat het wel een interne webserver betreft. Zou het dan kunnen zijn dat er toch een cloud-koppeling is? Of heb je een poort opengezet (geforward) op je router? :)

[...]
Staat er https:// in de adresbalk of http:// (of niks)? Als het een self-signed certificate is, geeft de browser dezelfde melding over de beveiliging.

[...]

Dit is er ook zo een. Je geeft zelf aan een noob te zijn, dus vandaar mijn scepsis. Maar heb je met Wireshark wel tussen de airco en de telefoon gezeten (dan wel op andere manier het verkeer ontvangt)? Anders is het hetzelfde als thuis de telefoon oppakken en het raar vinden dat je niet het gesprek van de buren af kunt luisteren ;)

Dus kun je eens vertellen waar je het allemaal op baseert?
Ik heb geen poort(en) geopend nee. Je zou daaruit af kunnen leiden dat er dan toch een cloud-koppeling is, maar hoe kom je daar achter....

Er staat http:// en geen https://

Wat ik doe, is Wireshark starten en vervolgens alleen het IP adres van de WiFi module monitoren. Als ik de pagina open heb staan, zie ik elke 30sec een aantal regels voorbij komen en als ik tussentijds een instelling aanpas en op SAVE klik, dan zie ik ook enkele regels erbij komen. Ik zie alleen, als n00b, niets waarmee ik iets kan. Ik vind het alleen al iets positiefs dat er überhaupt iets te zien is op dat IP adres. n00b hè :-)
laurens0619 schreef op donderdag 5 juli 2018 @ 18:42:
De airco zou toch ook prima beide kunnen doen? Interne webserver(direct) en cloud koppeling(30sec sync). Verder ben ik het met je eens dat het je wel erg goed afgaat voor een noob :)

Makkelijkste is de webserver te gebruiken.
Met firebug/developer console/tamper data kun je makkelijk de requesy afvangen.
Eerst moet je het login request capturen (daarmee krijg je sessie)
Daarna moet je de actie hebben

Dit kun je daarna programmeren in de domotica tool naar keuze.
Dat klinkt heel logisch (over de sessie en gebruik maken van de interne webserver), maar het gaat me m'n pet te boven. Ik kan heel goed, stap voor stap, verder met een aantal zetten in de rug, maar heb me wss vergist in hoe lastig het allemaal zal zijn om het voor elkaar te krijgen. Ik had gehoopt op een URL die wordt gebruikt, waarmee ik iets kon. Ik denk dat er gebruikt wordt gemaakt van: http://IP-ADRES/cgi-bin/api.cgi maar wat erachter moet komen te staan.....no idea.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Ga eerst een kijken naar requests met de developer toolbar ipv wireshark. Is 1000x zo simpel. Bv via chrome: https://www.mkyong.com/co...headers-in-google-chrome/

De actie staat in de url (get data) of in de body (post data).

Je zou eens met chrome alle requests kunnen kopieren als HAR en hier delen (https://support.google.co...P1KN0B0BV47QJW1bIE/?hl=en)

Wel even zaken als sessie id en credentials eruit halen :)

[ Voor 25% gewijzigd door laurens0619 op 05-07-2018 18:56 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
De broncode van de pagina: https://pastebin.com/XTfnqRmV

Hoewel ik daar dan weer niets terug kan vinden over de setpoint, on/off, enz. En ik zie geen frames oid......

De URL is statisch en verandert niet (dat zou te makkelijk zijn, hahahaha). Dus ik weet even niet wat ik met dat HAR aan moet....

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • RGAT
  • Registratie: Augustus 2011
  • Niet online
Wireshark gaat alleen wat broadcast verkeer oppikken, tenzij jij een managed switch hebt en die ook hebt ingestelt om de poort te mirroren... Daarom zie je niets (relevants).
Als je het cloud gebeuren negeert en de lokale website opent op je laptop/desktop terwijl Wireshark daar ook draait zou je wel wat nuttigs op kunnen pikken, dan kan Wireshark namelijk ook daadwerkelijk het verkeer zien.

Fixing things to the breaking point...


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
M.v.Veelen schreef op donderdag 5 juli 2018 @ 20:57:
De broncode van de pagina: https://pastebin.com/XTfnqRmV

Hoewel ik daar dan weer niets terug kan vinden over de setpoint, on/off, enz. En ik zie geen frames oid......

De URL is statisch en verandert niet (dat zou te makkelijk zijn, hahahaha). Dus ik weet even niet wat ik met dat HAR aan moet....
Heb je al naar de requests in de developer tools gekeken? Daar zou je de urls moeten zijn voorbij komen

CISSP! Drop your encryption keys!


Acties:
  • +1 Henk 'm!

Verwijderd

Met Wireshark (of developer thingy in browser) de TCP stream bekijken zodra je op "save" drukt.

Dit is eenvoudig te automatiseren met wget (of curl). Alle <form> elementen op die pagina POSTen naar zichzelf (de zelfde URL als de GET request). Je hoeft dus alleen de juiste POST data te verzenden. Optioneel met een cookie (eerst met wget inloggen en de cookie opslaan, daarna de vervolgacties waar je de cookie meezend).

wget --post-data 'thingy=value&another=bla' http://ip.van.je.airco/

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Even een paar losse opmerkingen.

Een clouddienst is zeer onwaarschijnlijk, dan zouden ze daar ook andere mogelijkheden op aanbieden.
En onder de huidige wetgeving bovendien verboden om dat zonder toestemming te doen.

Die data die elke 30 sec verzonden wordt zijn natuurlijk de gegevens die de airco produceert zoals on/off status, fanspeed, temperatuur, swing setting etc. die de app dan oppikt om te tonen.
Misschien kun je die data capturen en hier beschikbaar stellen, misschien dat iemand er iets in kan lezen.

Wat je eigenlijk wil is de besturings commandos weten, daarom kun je in plaats van de aircounit misschien beter je telefoon monitoren en capturen op het moment dat je een commando stuurt.

Misschien handiger dat met fiddler te doen vanaf je PC/Mac via de webpagina die je hebt om de airco te besturen.

[ Voor 7% gewijzigd door Ben(V) op 06-07-2018 10:46 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
laurens0619 schreef op donderdag 5 juli 2018 @ 22:03:
[...]

Heb je al naar de requests in de developer tools gekeken? Daar zou je de urls moeten zijn voorbij komen
Not sure where to search / find.....ik heb alles doorgespit, maar zie nergens een URL of iets waar ik wat mee kan.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

M.v.Veelen schreef op vrijdag 6 juli 2018 @ 17:05:
Not sure where to search / find.....ik heb alles doorgespit, maar zie nergens een URL of iets waar ik wat mee kan.
Heb je uberhaupt al met developer tools of Wireshark gekeken naar het netwerkverkeer?

In Firefox CTRL+SHIFT+C, en dan het Network tab. Zodra je op save drukt (op de airco pagina) zie je een POST request verschijnen. Als je dan op die POST request klikt (in Network tab) krijg je o.a. Headers, Params, Response, etc. Wat o.a. ook de URL bevat waar data heen gePOST is.

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Niet moeilijk doen.

Gewoon fiddler instaleren en dan de webpagina gaan gebruiken.
Zie ziet in fiddler alles langskomen inclusief header get en post commandos en data pakketjes etc.
Echt een pracht tool om zo iets te analyseren en veel beter dan wat welke browser dan ook je laat zien.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Sorry, uiteraard had ik dat gedaan. In Chrome. In Safari krijg ik ook niet de gehele URL:

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
28
29
30
31
32
33
Overzicht
URL: http://192.168.0.37/api.cgi
Status: 200 OK
Bron: Netwerk
Adres: 192.168.0.37:80

Verzoek
POST /api.cgi HTTP/1.1
Content-Type: application/json; charset=UTF-8
Origin: http://192.168.0.37
Host: 192.168.0.37
Accept: application/json, text/javascript, */*; q=0.01
Connection: keep-alive
Accept-Language: nl-nl
Accept-Encoding: gzip, deflate
Cookie: Intesis-Webserver={%22sessionID%22:%22lX9jrNYK2LUCXWBxj959rWqJma8bobd%22}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15
Referer: http://192.168.0.37/
Content-Length: 91
X-Requested-With: XMLHttpRequest

Reactie
HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
Cache-Control: no-cache
Server: ISHWEBSVR/1.0 - IntesisHome Web Server
Content-Length: 1069

Verzoekgegevens
MIME-type: application/json
Codering: UTF-8
Verzoekgegevens:


In Firefox:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
Aanvraag-URL:
Aanvraagmethode:
Extern adres:
Statuscode:
[Meer info]
Versie:
    
Antwoordheaders (163 B) 
Content-Length  
28
Content-Type    
application/json
Connection  
close
Server  
ISHWEBSVR/1.0 - IntesisHome Web Server
Cache-Control   
no-cache
Aanvraagheaders (512 B) 
Host    
192.168.0.37
User-Agent  
Mozilla/5.0 (Macintosh; Intel &#8230;) Gecko/20100101 Firefox/55.0
Accept  
application/json, text/javascript, */*; q=0.01
Accept-Language 
nl,en-US;q=0.7,en;q=0.3
Accept-Encoding 
gzip, deflate
Content-Type    
application/json; charset=utf-8
X-Requested-With    
XMLHttpRequest
Referer 
http://192.168.0.37/
Content-Length  
104
Cookie  
Intesis-Webserver={%22sessionI&#8230;NyhyeB6zKnhjtOiJXXi8k2d1W%22}
Connection


Meer dan dit kan ik er niet uit herleiden. Ik ga zo es fiddler proberen. Nog niet bekend mee, misschien laat dat me iets zien waarin wat mee kan.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Fiddler versus in-brower optie (welke http+https doet). Wat is moeilijker?
En geeft Fiddler dan ook certificate issues voor HTTPS?

En Wireshark is veel breder dan alleen HTTP. Daarmee bespaar je een nieuwe leercurve. Ik wil niet voor ieder protocol andere software installeren (en leren). Wireshark (en tcpdump) is het Zwitserse zakmes.
Rechtermuisknop op een HTTP-stream en dan "follow stream", geeft het zelfde resultaat als Fiddler.
M.v.Veelen schreef op vrijdag 6 juli 2018 @ 19:25:
Sorry, uiteraard had ik dat gedaan. In Chrome. In Safari krijg ik ook niet de gehele URL:
De URL is een combinatie van de Host-header en de GET/POST URI. In jouw geval:

code:
1
2
Host: 192.168.0.37
POST /api.cgi HTTP/1.1

Dat is dan: http://192.168.0.37/api.cgi

Je mist nog de POST-data en response data (Content-Length: 1069), je hebt nu alleen de headers. Uit de headers blijkt nu al dat je een cookie moet zetten om de api.cgi te gebruiken.

[ Voor 6% gewijzigd door Verwijderd op 06-07-2018 19:34 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Met Fiddler krijg ik eigenlijk hetzelfde te zien. Achter de ap.cgi verwacht ik nog wat gegevens, maar dat is helaas nergens terug te vinden.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST http://192.168.0.37/api.cgi HTTP/1.1
Host: 192.168.0.37
Connection: keep-alive
Content-Length: 106
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://192.168.0.37
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://192.168.0.37/
Accept-Encoding: gzip, deflate
Accept-Language: nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: Intesis-Webserver={%22sessionID%22:%22OjavGiQjw0HxFqS6G2eIGiz1MHW3QAf%22}

{"command":"setdatapointvalue","data":{"sessionID":"OjavGiQjw0HxFqS6G2eIGiz1MHW3QAf

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Nu komen we ergens.

Dit is een deel van de POST/request data:
code:
1
{"command":"setdatapointvalue","data":{"sessionID":"OjavGiQjw0HxFqS6G2eIGiz1MHW3QAf
Hier wordt 106 bytes aan JSON verwacht (zie Content-Length: 106). Je hebt nu slechts 83 bytes gepubliceerd.

$ echo '{"command":"setdatapointvalue","data":{"sessionID":"OjavGiQjw0HxFqS6G2eIGiz1MHW3QAf'|wc -L
83


Er is zowel request als response data in de vorm van JSON.

[ Voor 3% gewijzigd door Verwijderd op 06-07-2018 21:12 ]


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Misschien even een klein beetje uitleg over het fiddler scherm.

links zie je alles wat het netwerk in en uit gaat.
Als je dus met je browser een pagina van die airco oproept ziet je het verstuurde en de response van die airco.
Ga je op zo'n regel staan dan zie je rechts boven een aantal tabjes die op verschillende manieren dingen weergeven.
Standaard staat die op inspector en kun je zien wat de data is in verschillende formaten.
Het raw formaat laat exact zien wat je stuurt, maar bijvoorbeeld het tabje webform laat het gestructureerder zien en als het jason data is klik je op het jason tabje en wordt het als json data weer gegeven.

Rechts onder is het windows van de response en daar kun je ook in verschillende formaten zien wat de response is.
Als het bijvoorbeeld een webpagina is klik je op "webview" en als het jason data is klik je op jason.
Die tabje zijn gewoon filters hoe de data weergegeven moet worden.

Op deze manier kun je exact volgen wat er tussen je browser en die airco heen en weer gezonden wordt.

Als je nu met je browser een wijziging van bijvoorbeeld de airco aanzet zie je precies wat je browser verstuurt en wat de airco terug stuurt.

[ Voor 4% gewijzigd door Ben(V) op 07-07-2018 09:31 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Je hoeft niets achter de URL te zien. Dat zie je hier ook niet als je een reactie plaatst ;)
De gegevens worden met een zogenoemde POST naar de server gestuurd, en volgen na alle headers.

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Met fiddler zie je gewoon alles.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik denk dat jullie het zó voor elkaar zouden hebben..... ik sta nog vóór het begin van te begrijpen van hoe ik moet starten, hahahaha. Ik zie met Fiddler van alles en nog wat, maar wat ik nu precies kan gebruiken om een URL in elkaar te flansen zodat ik alleen al een reactie van de airco krijg? Alleen een on/off zou al een hele grote stap voorwaarts zijn. Iemand die in de buurt woont of met Teamviewer eens wat wil proberen :-) ?

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Het lijkt moeilijker dan het is.
Je zei dat je die airco met een browser kon bereiken en commando's geven.
Je start een browser op en daarna Fiddler.
Dan geef je de url van de airco pagina in in de browser
In het linker window van fiddler kun je de communicatie tussen je browser en die airco volgen.
Selecteer de regel die je browser verstuurt dan kun je rechts de informatie in verschillende vormen zien.

Selecteer links de regel die je airco terugstuurt en dan kun je die informatie rechts onder zien, meestal is daar webview het leestbaarst.

Vooral geen andere websites of browser openen want dan wordt alles heel onoverzichtelijk.
Je kunt ook allerlei andere regels ertussendoor krijgen want het stikt van programma's op je PC die van alles richting het internet doen.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
De webview geeft me alleen dit:

http://192.168.0.56/api.cgi (even de andere airco genomen van zolder ;-))

code:
1
{"success":true,"data":null}


Verder zie ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST http://192.168.0.56/api.cgi HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://192.168.0.56/
Accept-Language: nl-NL
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Host: 192.168.0.56
Content-Length: 104
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: Intesis-Webserver={%22sessionID%22:%2271vl4axz5DI7Y7K3EG1N3r9XL6S3Qy8%22}

{"command":"setdatapointvalue","data":{"sessionID":"71vl4axz5DI7Y7K3EG1N3r9XL6S3Qy8","uid":1,"value":0}}

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Archie_T
  • Registratie: Januari 2002
  • Laatst online: 00:45
Aan de hand van de info in jouw vorige post kwam ik op deze:
https://www.intesishome.c...s/rest-api-documentation/
Het probleem is dat Intensis Webserver volgens mij een standaard webserver is die voor veel IOT (kom ook wat KNX tegen) gebruikt wordt. Als je meer details heb over de kaart en de app die je gebruikt kom je wellicht verder. Daarnaast is de optie voor het debuggen van een iPhone via een Mac ook al langs gekomen (Developer Tools installeren, interface aanmaken en wireshark gebruiken). Ook daar kan je veel mee leren.
Ik zie overigs een session ID, dat kan het verhaal nog wel eens lastig maken aangezien je misschien eerst connectie moet maken (cookie wegschrijven) en dan pas opdrachten versturen. Maar, zoals gezegd, als je meer info geeft kunnen wij misschien ook meer doen ;)
<edit>
https://github.com/jnimmo...sistant/custom_components kan ook nog wel wat helpen denk ik.
</edit>

[ Voor 7% gewijzigd door Archie_T op 07-07-2018 15:44 ]


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
M.v.Veelen schreef op zaterdag 7 juli 2018 @ 15:11:
De webview geeft me alleen dit:

http://192.168.0.56/api.cgi (even de andere airco genomen van zolder ;-))

code:
1
{"success":true,"data":null}


Verder zie ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST http://192.168.0.56/api.cgi HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://192.168.0.56/
Accept-Language: nl-NL
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Host: 192.168.0.56
Content-Length: 104
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: Intesis-Webserver={%22sessionID%22:%2271vl4axz5DI7Y7K3EG1N3r9XL6S3Qy8%22}

{"command":"setdatapointvalue","data":{"sessionID":"71vl4axz5DI7Y7K3EG1N3r9XL6S3Qy8","uid":1,"value":0}}
Als je dan nog even de regel ervoor bekijkt zie je wat je browser gestuurd heeft en weet je welk je commando je moet versturen.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ben(V) schreef op zaterdag 7 juli 2018 @ 16:31:
[...]


Als je dan nog even de regel ervoor bekijkt zie je wat je browser gestuurd heeft en weet je welk je commando je moet versturen.
Dit is wat ik te zien krijg. De regel ervoor is van de page-refresh en daarin wordt vanaf de webserver informatie doorgegeven over de huidige waardes (temp, status, enz). Ik heb 2 regels waarin vrijwel hetzelfde staat: 1 regel met het ON command en 1 regel met het OFF command. Alleen zie ik dan niet meer dan de api.cgi en verder alleen een reply dat e.e.a. goed is ontvangen/verwerkt. Ik heb alle tabbladen afgezocht verder en niets nuttigs kunnen vinden.

Developer tools installeren en op die manier gaan zoeken naar een oplossing is voor mij niet weggelegd helaas.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
@M.v.Veelen Je doel is om het verzoek dat de BROWSER doet naar de webserver na te spelen. Je moet dus weten wat de request headers zijn die de browser doet om de webserver zover te kijken om 'ok' terug te geven.

Geef dus even de volledige context (hele log) van de communicatie, anders kunnen we je niet helpen.

[ Voor 10% gewijzigd door Room42 op 07-07-2018 16:51 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
@Room42 Ik wil dat heel graag geven, maar er is zoveel data verspreid over zoveel verschillende tabbladen, en ik zie niets wat van nut zou kunnen zijn. Geloof me, dan had ik het geplaatst en waren we misschien al een heel eind verder.

Er is in Fiddler geen 'log', er is een request waaruit ik diverse info kan zien, maar het is niet meer dan wat ik hierboven al heb aangegeven. Met Wireshark zie ik ook niets zinvols.

Ik probeer echt zoveel mogelijk hier te plaatsen, maar ik zou niet weten wat ik nog heb gemist....

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Volgens mij heb je alles al.
De browser zet een sessie op en stuurt via een post commando de volgende jason data mee;
{
"command": "setdatapointvalue",
"data": {
"sessionID": "71vl4axz5DI7Y7K3EG1N3r9XL6S3Qy8",
"uid": 1,
"value": 0
}
}
Ik weet niet welk commando je gaf maar hij stuurt het commando setdatapointvalue met de gegevens uid 1 en value 0

Moest je niet eerst inloggen op de webpagina van die airco?

Ik kan wel een python scriptje voor je schrijven die voor je inlogt en dan een settings doet.
Moet jij alleen met fiddler uitzoeken welke commando's het zijn.

[ Voor 22% gewijzigd door Ben(V) op 07-07-2018 18:55 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
@M.v.Veelen Dan is Fiddler misschien niet de tool voor jou :) Maar het kan ook prima met de browser zelf. Ik gebruik Firefox maar Chrome kan het ook. Je kunt in de console op de request klikken en dan zie je de request headers. Daarin staat de info die je nodig hebt. In M.v.Veelen in "Opvangen (WiFi) signalen airco units" zat je al aardig op de juiste weg.

- Druk op Ctrl+Shift+K
- Zorg dat 'requests' (1) aan staat
- Verstuur nu een opdracht naar de airco
- Klik op de POST request die daaruit volgt (2)
- Kijk bij de params (3) naar wat er naar de server verzonden is.
- Ook het tabblad Headers kan nog interessant zijn.

Schroom niet om alle meuk gewoon hier te posten, dan maken wij er wel kaas van.

Voorbeeld van wat er naar Tweakers verzonden is toen ik op 'toon voorbeeld' klikte:
Afbeeldingslocatie: https://i.imgur.com/bREFul4.png

[ Voor 5% gewijzigd door Room42 op 07-07-2018 19:05 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
@Ben(V) Ja, ik moet eerst inloggen en dan naar de pagina 'Signals' gaan. Daar zie ik dan dit:

Afbeeldingslocatie: http://i67.tinypic.com/fvwpwp.jpg

@Room42 Met welke browser heb je dit gedaan? Ik werk op een Macbook Pro en heb Parallels met Windows draaien en zo ook Chrome, Safari en Firefox. Ik herken dit echter niet. Ik zou graag de stappen 1 voor 1 doorlopen om te zien of ik ook een URL kan ontdekken.
Ben(V) schreef op zaterdag 7 juli 2018 @ 18:48:
Volgens mij heb je alles al.
De browser zet een sessie op en stuurt via een post commando de volgende jason data mee;


[...]

Ik weet niet welk commando je gaf maar hij stuurt het commando setdatapointvalue met de gegevens uid 1 en value 0

Moest je niet eerst inloggen op de webpagina van die airco?

Ik kan wel een python scriptje voor je schrijven die voor je inlogt en dan een settings doet.
Moet jij alleen met fiddler uitzoeken welke commando's het zijn.
Dit was slechts het uitzetten van de airco (of was het nu het aanzetten?).

[ Voor 44% gewijzigd door M.v.Veelen op 07-07-2018 20:01 ]

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

Verwijderd

Dat is met Firefox, zoals hij al aangaf (en ik ook, maar lijkt alsof je niet leest/luistert). ;)

Je moet eerst het inloggen automatiseren, en daarna de specifieke actie uitvoeren.

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Verwijderd schreef op zaterdag 7 juli 2018 @ 20:00:
Dat is met Firefox, zoals hij al aangaf (en ik ook, maar lijkt alsof je niet leest/luistert). ;)

Je moet eerst het inloggen automatiseren, en daarna de specifieke actie uitvoeren.
Zoals ik al zei komt het me niet bekend voor.

Dit krijg ik te zien met Firefox:

Afbeeldingslocatie: http://i68.tinypic.com/baiqo.jpg

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Daar zie je de 'Aanvraagheaders', 'Parameters' (aanvraag data als JSON), 'Antwoordheaders' en 'Antwoord' (als JSON).

offtopic:
Als IT-er raad ik aan Engels te gebruiken, ook als OS en alle apps. Dan vind je veel meer resultaten op internet.

[ Voor 37% gewijzigd door Verwijderd op 07-07-2018 20:10 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
M.v.Veelen schreef op zaterdag 7 juli 2018 @ 20:03:
[...]


Zoals ik al zei komt het me niet bekend voor.

Dit krijg ik te zien met Firefox:

[afbeelding]
Jij zit in 'Netwerk', ik in Console:

Afbeeldingslocatie: https://i.imgur.com/AJ6Rg9A.png

Maar overigens heb je onder netwerk ook een tabje 'Parameters'.

Afbeeldingslocatie: https://i.imgur.com/gNJwy1A.png

[ Voor 14% gewijzigd door Room42 op 07-07-2018 20:14 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
OK, vanuit console:

Afbeeldingslocatie: http://i66.tinypic.com/2a5hij6.jpg

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

De zelfde vragen blijven staan (of je dat nou met console of network tab doet).

In dat laatste plaatje:
• Headers (request en response)
• POST (request data, 'onbewerkte gegevens' is waarschijnlijk raw)
• Antwoord (response data)

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Welke versie van Firefox draai je? Die oogt me oud, namelijk.

[ Voor 57% gewijzigd door Room42 op 07-07-2018 20:23 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Room42 schreef op zaterdag 7 juli 2018 @ 20:17:
[...]

Welke versie van Firefox draai je? Die oogt me oud, namelijk.
Nu 61.0.1, ik zag dat ik wat updates had gemist inderdaad.

Afbeeldingslocatie: http://i65.tinypic.com/2191j4o.jpg

Welke info is nog nodig?

Afbeeldingslocatie: http://i63.tinypic.com/284hkw.jpg

Afbeeldingslocatie: http://i64.tinypic.com/2cckqo1.jpg

Afbeeldingslocatie: http://i64.tinypic.com/2mebrpe.jpg

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Welke actie betreft die info? (de uid=1? is dat on/off? of wat?)

Kan je het zelfde publiceren van de login-procedure?

[edit] reactie op beneden me:
Room42 schreef op zaterdag 7 juli 2018 @ 20:57:
En maak het venstertje even wat hoger, zodat het allemaal in 1 screenshot past ;)
Screenshots? Ik heb liever de ruwe data in een [ code ] [ /code ] ding. Maar kan hier wel mee leven (zoveel data is het niet).

[ Voor 100% gewijzigd door Verwijderd op 07-07-2018 20:59 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
En maak het venstertje even wat hoger, zodat het allemaal in 1 screenshot past ;)

Overigens kun je in het Netwerk-tab ook de headers editen en opnieuw verzenden. Daar kun je eens proberen om van 'value=1' 'value=0' te maken en kijken of de airco dan weer uit gaat.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Login (user en password heb ik default gelaten voor nu):

Afbeeldingslocatie: http://i63.tinypic.com/14in4o6.jpg

En het veranderen van de values, waar doe ik dat precies en hoe verstuur ik die opnieuw?

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou graag het 'Antwoord' van de "command: login" zien. Al is dat waarschijnlijk ook "{success:true, data:{}}"

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Past niet allemaal op 1 pagina. Ik krijg direct 3 URL's terug:

Afbeeldingslocatie: http://i63.tinypic.com/6500uh.jpg

Afbeeldingslocatie: http://i65.tinypic.com/a2ar9z.jpg

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Ipv van al die losse snippets, maak nou gewoon een HAR export dan hebben we een compleet beeld

https://confluence.atlass...b-requests-720420612.html

Als ik heel eerlijk ben denk ik niet, ook al heb je de urls, jij het in elkaar gescript krijgt. Heb je enige scripting/programmeer ervaring? Waar wil je het uiteindelijk in bouwen/koppelen?

Misschien is dit meer iets voor je
https://chrome.google.com...dmfieckjlnblleoemohcganoc

Kun je de hele sessie (inloggen, value veranderen) mee opnemen en daarna opnieuw laten afspelen/uitvoeren

[ Voor 56% gewijzigd door laurens0619 op 07-07-2018 21:30 ]

CISSP! Drop your encryption keys!


Acties:
  • Beste antwoord
  • +2 Henk 'm!

Verwijderd

Och, dit is opzich duidelijk. Nu alleen nog uitvinden welke actie welk ID heeft.

Ik dacht aan zoiets a.d.h.v. bovenstaande info (ongetest natuurlijk):
#!/usr/bin/env bash

#temp hardcoded ip
AIRCO_IP=192.168.0.37
#AIRCO_IP=192.168.1.1
COOKIE=$(mktemp)

#pseudo: login
LOGIN_RESPONSE=$(mktemp)
wget --save-cookies ${COOKIE} \
     --keep-session-cookies \
     --post-data "{\"command\":\"login\",\"data\":{\"username\":\"operator\",\"password\":\"operator\"}}" \
     --output-document=${LOGIN_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'login','data':{'username':'operator','password':'operator'}}" \

#pseudo: get sessionID from login
SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')

#pseudo: set value on airco
ACTION_RESPONSE=$(mktemp)
wget --load-cookies ${COOKIE} \
     --post-data "{\"command\":\"setdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":1,\"value\":1}}" \
     --output-document=${ACTION_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'setdatapointvalue','data':{'sessionID':'${SESSION_ID}','uid':1,'value':1}}" \

#pseudo: debugging
echo '-----------'
echo 'DEBUGGING'
echo '-----------'
echo "sessionID: [${SESSION_ID}]"
echo '-----------'
echo 'login response:'
cat ${LOGIN_RESPONSE}
echo '-----------'
echo 'action response:'
cat ${ACTION_RESPONSE}
echo '----------'

#cleanup
if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi


Nu dus alle verschillende acties nog uitvinden (on/off, set temperature, etc). Dan kan het scriptje wat netter/duidelijker gemaakt worden.

[ Voor 29% gewijzigd door Verwijderd op 07-07-2018 22:56 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ongetest of niet, dit is het resultaat als ik via de CLI het script aanroep:
pi@pidomoticz:~ $ sh airco.sh
--2018-07-07 21:32:24-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.zcFfLBeHBK’

/tmp/tmp.zcFfLBeHBK [ <=> ] 0 --.-KB/s in 0s

2018-07-07 21:32:24 (0.00 B/s) - ‘/tmp/tmp.zcFfLBeHBK’ saved [0/0]

--2018-07-07 21:32:24-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.7eKmOg17OU’

/tmp/tmp.7eKmOg17OU [ <=> ] 0 --.-KB/s in 0s

2018-07-07 21:32:24 (0.00 B/s) - ‘/tmp/tmp.7eKmOg17OU’ saved [0/0]
HAR file: https://pastebin.com/aPmmyTZ0

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

M.v.Veelen schreef op zaterdag 7 juli 2018 @ 21:36:
Ongetest of niet, dit is het resultaat als ik via de CLI het script aanroep:
Misschien even toevoegen voor de 'pseudo: cleanup':
code:
1
cat ${ACTION_RESPONSE}

Het uiteindelijke script zal een 'wget -q' (quiet) krijgen, waardoor het wat minder output geeft.

Je moet per actie op de airco een tabelletje maken. De post-data van on/off. set temperature. etc. Iedere actie hier documenteren.

Die har-file zal vast niet alle info bevatten. Ik denk dat je dat beter zelf even kan uitzoeken. Welke variable/optie configureer je, zoals beschreven in de POST setdatapointvalue? Als die waarde op 0 gezet wordt, gaat dan je airco uit?

Ik gok dat andere waardes (b.v. set temperature) een andere uid hebben (in de POST-data JSON). Maar dat is aan jou om uit te zoeken. :)
offtopic:
Of post die .har files op pastebin (als private/unlisted, voor 1 week). Dan lekt mijn IP niet ;)


Ik zit te denken aan deze syntax voor het scriptje:
# airco.sh IP on|off|settemp|...
airco.sh 192.168.0.23 settemp 20
airco.sh 192.168.0.23 off

[ Voor 14% gewijzigd door Verwijderd op 07-07-2018 21:54 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik heb alleen nog maar de On/Off getest. En in jouw script had ik ${SESSION_ID}','uid':1,'value':1}} aangepast naar ${SESSION_ID}','uid':1,'value':0}} om te zien of de airco dan uit ging, maar er veranderde helaas niets.

Wat bedoel je met die wget -q ?

Ik probeer jullie echt bij te houden hoor, maar voor een n00b is het lastig om de terminologie bij te houden en wat ik precies moet doen :-)

Pastebin-tip uitgevoerd.

Wat kan ik nu nog doen om te zien of er iets gebeurt met jouw script?

[ Voor 11% gewijzigd door M.v.Veelen op 07-07-2018 21:57 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

M.v.Veelen schreef op zaterdag 7 juli 2018 @ 21:54:
Ik heb alleen nog maar de On/Off getest. En in jouw script had ik ${SESSION_ID}','uid':1,'value':1}} aangepast naar ${SESSION_ID}','uid':1,'value':0}} om te zien of de airco dan uit ging, maar er veranderde helaas niets.
Vandaar die 'cat' even toevoegen aan het scriptje, dan zie je het antwoord.
Wat bedoel je met die wget -q ?
Dat is een verandering die ik later opneem in het scriptje.
Ik probeer jullie echt bij te houden hoor, maar voor een n00b is het lastig om de terminologie bij te houden en wat ik precies moet doen :-)
Eerst even kijken wat die 'cat ${ACTION_RESPONSE}' als antwoord geeft (in het scriptje toevoegen). Misschien geeft dat duidelijkheid. Misschien gaat de login nog fout! :)

[edit]
Ik heb mijn scriptje boven even aangepast met wat meer debugging.

[ Voor 4% gewijzigd door Verwijderd op 07-07-2018 22:01 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Met die regel er in:
--2018-07-07 22:01:49-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.DfsWesiiH0’

/tmp/tmp.DfsWesiiH0 [ <=> ] 0 --.-KB/s in 0s

2018-07-07 22:01:49 (0.00 B/s) - ‘/tmp/tmp.DfsWesiiH0’ saved [0/0]

--2018-07-07 22:01:49-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.SS2lEqBTAn’

/tmp/tmp.SS2lEqBTAn [ <=> ] 0 --.-KB/s in 0s

2018-07-07 22:01:49 (0.00 B/s) - ‘/tmp/tmp.SS2lEqBTAn’ saved [0/0]
Met jouw aangepaste script:
pi@pidomoticz:~ $ sh airco.sh
--2018-07-07 22:03:21-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.asyqd7STwM’

/tmp/tmp.asyqd7STwM [ <=> ] 0 --.-KB/s in 0s

2018-07-07 22:03:21 (0.00 B/s) - ‘/tmp/tmp.asyqd7STwM’ saved [0/0]

--2018-07-07 22:03:21-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.TM5H9cSzke’

/tmp/tmp.TM5H9cSzke [ <=> ] 0 --.-KB/s in 0s

2018-07-07 22:03:21 (0.00 B/s) - ‘/tmp/tmp.TM5H9cSzke’ saved [0/0]

-----------
DEBUGGING
-----------
login response:
/tmp/tmp.asyqd7STwM
-----------
action response:
----------

[ Voor 36% gewijzigd door M.v.Veelen op 07-07-2018 22:03 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Er gaat waarschijnlijk al iets fout bij de login. Gezien de "Length: 0 [application/json]" bij de 1e request (en 2e).
Met jouw aangepaste script:
Je had net de verkeerde versie (ik moest cat ipv echo hebben). Edoch lost dat niets op. De --post-data voor login is nog incorrect.

[ Voor 26% gewijzigd door Verwijderd op 07-07-2018 22:07 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik heb de user met een hoofdletter in het script gezet (zo staat hij ook op de pagina), maar dat helpt niet.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Kan je ook een HAR-file maken van de login POST?
Die HAR-files zijn best leesbaar als rawe JSON. :)

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Puur alleen het inloggen als Operator : https://pastebin.com/LEtkT0Hh

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

Verwijderd

Ik heb nu de login --post-data aangepast (letterlijke copy/paste) en twee --header's toegevoegd. Ben benieuwd of het over de mimetype's valt.

Acties:
  • +1 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Goed bezig @M.v.Veelen en @Verwijderd

Doe nu gestructureerd een record van de vervolg acties.
1. Eerst alle netwerk communicatie clearen
2.actie uitvoeren (bv airco aan)
3. Har export van alle netwerk acties die je zag voorbij komen en filename gebruiken voor beschrijving (airco_aan.har)

Herhaal dit voor alle acties.

Een fijne site om de har weer te visualiseren is: http://www.softwareishard.com/har/viewer/

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik verdien echt geen kudo's hoor, alle eer voor degenen die mij (willen) helpen.

Resultaat is goed mbt inloggen:
pi@pidomoticz:~ $ sh airco.sh
--2018-07-07 22:46:56-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78 [application/json]
Saving to: ‘/tmp/tmp.DSVDkMffNm’

/tmp/tmp.DSVDkMffNm 100%[======================================================================>] 78 --.-KB/s in 0s

2018-07-07 22:46:56 (2.83 MB/s) - ‘/tmp/tmp.DSVDkMffNm’ saved [78/78]

--2018-07-07 22:46:56-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/json]
Saving to: ‘/tmp/tmp.nW0zlvWv31’

/tmp/tmp.nW0zlvWv31 [ <=> ] 0 --.-KB/s in 0s

2018-07-07 22:46:56 (0.00 B/s) - ‘/tmp/tmp.nW0zlvWv31’ saved [0/0]

-----------
DEBUGGING
-----------
login response:
{"success":true,"data":{"id":{"sessionID":"BD53y41hgCTyTP0nTZb1b2ag7Yo3oYI"}}}-----------
action response:
airco aan: https://pastebin.com/Tpy60QpS
airco uit: https://pastebin.com/rGH6BH0C

[ Voor 3% gewijzigd door M.v.Veelen op 07-07-2018 22:53 ]

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Mooi :)
Dat die login nu werkt komt denk ik door de headers die @Verwijderd aan de login heeft toegevoegd. Die missen nu nog bij de 2e wget. Als je die —header regels van de 1e wget nu ook bij de 2e erbij zet heb je best kans dat het gaat werken.

Als ik naar de har files kijk dan heeft @Verwijderd de juiste code opgenomen in de post

[ Voor 15% gewijzigd door laurens0619 op 07-07-2018 22:57 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

Verwijderd

Fun!
M.v.Veelen schreef op zaterdag 7 juli 2018 @ 22:48:
Ik verdien echt geen kudo's hoor, alle eer voor degenen die mij (willen) helpen.

Resultaat is goed mbt inloggen:
Yay. Heb de --header's ook bij action toegevoegd, en andere quotation. Ben benieuwd of dit nu ook iets doet (en graag copy/pasten inclusief de '-----', zodat ik weet waar het echt stopt).

Acties:
  • +1 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Resultaat:
pi@pidomoticz:~ $ sh airco.sh
--2018-07-07 22:59:31-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78 [application/json]
Saving to: ‘/tmp/tmp.5jdebFFjbH’

/tmp/tmp.5jdebFFjbH 100%[======================================================================>] 78 --.-KB/s in 0s

2018-07-07 22:59:31 (2.93 MB/s) - ‘/tmp/tmp.5jdebFFjbH’ saved [78/78]

--2018-07-07 22:59:31-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 28 [application/json]
Saving to: ‘/tmp/tmp.Udl6mkMC5b’

/tmp/tmp.Udl6mkMC5b 100%[======================================================================>] 28 --.-KB/s in 0s

2018-07-07 22:59:31 (1.09 MB/s) - ‘/tmp/tmp.Udl6mkMC5b’ saved [28/28]

-----------
DEBUGGING
-----------
sessionID: [I8B435Esxr4QooMffeOSBMZZFgzSP7m]
-----------
login response:
{"success":true,"data":{"id":{"sessionID":"I8B435Esxr4QooMffeOSBMZZFgzSP7m"}}}-----------
action response:
{"success":true,"data":null}----------
pi@pidomoticz:~ $
Klopt de opbouw wel? Staan er niet teveel { in?

Als ik me niet vergis is dit de airco_UIT en zou de airco uit moeten schakelen. Net aangezet, maar hij gaat niet uit. Of wil ik te snel ;-) ?

Edit: hiermee zou de airco juist AAN moeten gaan, en dat lijkt ook zo te zijn. Even testen of hij uit gaat als ik er een '0' van maak.

JAAAA !! Als ik er een '0' van maak, gaat ie uit !

In theorie heb ik nu al een On/Off met jullie hulp !!

[ Voor 7% gewijzigd door M.v.Veelen op 07-07-2018 23:03 ]

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Uit die andere har heb ik alle andere uid gevonden met mogelijke acties. Zit helaas geen description bij maar adv de waardes moet je wel iets af kunnen leiden (of bruteforcen en kijken wat je airco doet hehe)

code:
1
2
3
4
5
6
7
8
9
10
11
{"success":true,"data":{"dp":{"datapoints":[{"uid":1,"rw":"rw","type":1,"descr":{"numStates":2,"states"
:[0,1]}},{"uid":2,"rw":"rw","type":1,"descr":{"numStates":5,"states":[0,1,2,3,4]}},{"uid":4,"rw":"rw"
,"type":1,"descr":{"numStates":4,"states":[1,2,3,4]}},{"uid":5,"rw":"rw","type":1,"descr":{"numStates"
:5,"states":[1,2,3,4,10]}},{"uid":9,"rw":"rw","type":2,"descr":{"maxValue":300,"minValue":180}},{"uid"
:10,"rw":"r","type":2,"descr":{"maxValue":500,"minValue":-100}},{"uid":12,"rw":"rw","type":1,"descr"
:{"numStates":2,"states":[0,1]}},{"uid":13,"rw":"rw","type":0,"descr":{}},{"uid":14,"rw":"r","type":1
,"descr":{"numStates":2,"states":[0,1]}},{"uid":15,"rw":"r","type":3,"descr":{}},{"uid":35,"rw":"r","type"
:2,"descr":{"maxValue":300,"minValue":180}},{"uid":36,"rw":"r","type":2,"descr":{"maxValue":300,"minValue"
:180}},{"uid":37,"rw":"r","type":2,"descr":{"maxValue":430,"minValue":-250}},{"uid":181,"rw":"rw","type"
:0,"descr":{}},{"uid":182,"rw":"rw","type":0,"descr":{}},{"uid":183,"rw":"rw","type":0,"descr":{}},{"uid"
:184,"rw":"rw","type":0,"descr":{}}]}}}

Moet je alleen @Verwijderd lief aankijken of hij het script kan aanpassen dat het iedere uid en value accepteert

[ Voor 4% gewijzigd door laurens0619 op 07-07-2018 23:06 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

Verwijderd

M.v.Veelen schreef op zaterdag 7 juli 2018 @ 23:01:
JAAAA !! Als ik er een '0' van maak, gaat ie uit !

In theorie heb ik nu al een On/Off met jullie hulp !!
Wauw! Gewoon een '{"success":true,"data":null}'! I like it! :7

@laurens0619 ja, die datapoints zag ik idd.

Ik denk dat het aan de TS is om een tabelletje te maken per actie. Dan kan ik mijn scriptje editen.

Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Verwijderd schreef op zaterdag 7 juli 2018 @ 23:07:
[...]

Wauw! Gewoon een '{"success":true,"data":null}'! I like it! :7

@laurens0619 ja, die datapoints zag ik idd.

Ik denk dat het aan de TS is om een tabelletje te maken per actie. Dan kan ik mijn scriptje editen.
Taart!

Ik denk dat in de rest van de har ook wel de texten terug te herleiden zijn maar ik zit op mijn telefoon dus dat gaat hem niet worden :p
Daarbij mooie basis voor @M.v.Veelen om het nu verder zelf uit te dokteren?

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

Verwijderd

laurens0619 schreef op zaterdag 7 juli 2018 @ 23:10:
Daarbij mooie basis voor @M.v.Veelen om het nu verder zelf uit te dokteren?
Lijkt me ook!

• Er zijn dus 4 types (0 t/m 3). Waar ik type 1 verdenk van int of bool. Deze vraag lost zichzelf op.
• Er zijn 16 (1 t/m 16) uid's die geconfigureerd kunnen worden. Deze moet de TS verduidelijken.

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik heb de volgende har-files gemaakt:
  • auto / cool / heat / dry / fan (statussen)
  • setpoint 24 / setpoint 25 (daar moet dan, ook voor mij, uit te herleiden zijn waar de waarde moet worden aangepast)
  • speed1 / speed2 / speed3 / speed4
  • position1 / position2 / position3 / position4 / swing (stand van de kleppen)
Ehm, ik wil best voor elk een aparte bash file maken, misschien lukt mij dat ook wel met bovenstaande hulp, maar als het script nog aangepast kan worden naar iets waarmee ik een waarde mee kan geven, dan zou dat de kers op de taart zijn.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Meest eenvoudige is dan het script zo te maken:
Script.sh <ip> <uid> <value>
Airco aanzetten is dan: Script.sh 192.168.0.23 1 1
Uitzetten: Script.sh 192.168.0.23 1 0


Ik denk trouwens dat het zonder ons ook wel moet lukken de uids te vinden. Ipv export har kijk je op dat moment welke uid en value je in de data ziet

[ Voor 13% gewijzigd door laurens0619 op 07-07-2018 23:32 ]

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik ga even knutselen. De setpoint is in ieder geval te herleiden:

{"command":"setdatapointvalue","data":{"sessionID":"yhcnn0Thz17290fN9jF9pVz8MMNa08T","uid":9,"value"
:240}}

Dus UID: 9 en ipv 24 is de value 240

Alleen, als ik nog hulp kan krijgen om het script anders te schrijven, dan heel graag.

Nu maak ik voor elke wijziging (en elke airco, dus x 2) een apart script. En dat is voor de kenner nogal houtje-touwtje.

Ik wil in ieder geval alvast iedereen bedanken die zich heeft ingezet voor een werkende oplossing. Echt serieus waar, heel erg bedankt !

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

Verwijderd

Die screenshot wat verduidelijken. De UID's zijn iig niet 1 tm 16, foutje van me.

Maar klopt die t.o.v. de bovenstaande JSON?

Als het plaatje en de UID's alignen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on/off: uid 1. type 1 (select list, 0-1).
user mode: uid 2, type 1 (select list, 0-4).
fan speed: uid 4, type 1 (select list, 1-4).
vane up/down position: uid 5, type 1 (select list, 1/2/3/4/10)
user setpoint: uid 9, type 2 (180 tot 300) <-- Is dit 18.0 graden C tot 30.0 graden C?
return path temp (r): uid 10, type 2 (-100 tot 500) <-- Zou dit -10.0C tot +50C zijn?
remote disable: uid 12, type 1 (select list, 0-1)
on time: uid 13, type 0 ??????????????????????
alarm status (r): uid 14, type 1 (select list, 0-1)
error code (r): uid 15, type 3 ????????????????
min temp (r): uid 35, type 2 (180 tot 300) <--- wederom graden Celsius?
max temp (r): uid 36, type 2 (180 tot 300) <-- graden C?
outdoor temp (r): uid 37, type 2 (-250 tot 430) <-- graden C?
maintenance time: uid 181, type 0
maintenance config: uid 182, type 0
maintenance filter time: uid 183, type 0
maintenance filter config: uid 184, type 0

De type 0 en type 3 zijn nog wat onduidelijk. Maar dit geeft een redelijke impressie. Het plaatje en de UID's lijken me te matchen!

[ Voor 28% gewijzigd door Verwijderd op 07-07-2018 23:52 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Dat plaatje ziet er idd niet uit zie ik nu.....

Een overzichtje:

Position1 : UID5, value1
Position2 : UID5, value2
Position3 : UID5, value3
Position4 : UID5, value4
Position Swing : UID5, value10

Speed1 : UID4, value1
Speed2 :UID4, value2
Speed3 : UID4, value3
Speed4 : UID4, value4

Setpoint24 : UID9, value240
enz

Auto : UID2, value0
Heat : UID2, value1
Dry : UID2, value2
Fan : UID2, value3
Cool : UID2, value4

Een aantal UID's zullen wss worden gebruikt om de status (bijv. de temperatuur) uit te lezen vermoed ik.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
@Verwijderd slim! Ik denk dat het klopt

Mbt die temp setpoint zit je denk ik goed. @M.v.Veelen had zelf al uitgevonden dat je het zonder decimaal *10 moest sturen:
Dus UID: 9 en ipv 24 is de value 240

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
laurens0619 schreef op zaterdag 7 juli 2018 @ 23:05:

Moet je alleen @Verwijderd lief aankijken of hij het script kan aanpassen dat het iedere uid en value accepteert
O+ Zoiets :o ?

Mbt de UID's klopt het tabelletje wel. Alleen hoef ik niet per sé alles in te kunnen stellen. Ik hoef geen vaste tijd dat de airco aan moet springen bijvoorbeeld. Maar als het een alles-of-niets-script wordt, dan houden we die optie in ieder geval wel open.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • laurens0619
  • Registratie: Mei 2002
  • Laatst online: 22:37
Als ik mag gokken is @Verwijderd gedreven genoeg om alle functies in de code te modelleren compleet met refactoring van code (ik verwacht toch wel op zijn minst objecten, sessie hergebruik etc :+ )

CISSP! Drop your encryption keys!


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Al versta ik niet wat je hier zegt, ik hoop het ook, hahahaha. Maar voor hem is het ook al laat, dus mss dat hij op een verloren momentje nog even ernaar wil kijken.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

laurens0619 schreef op zaterdag 7 juli 2018 @ 23:49:
Als ik mag gokken is @Verwijderd gedreven genoeg om alle functies in de code te modelleren compleet met refactoring van code (ik verwacht toch wel op zijn minst objecten, sessie hergebruik etc :+ )
Grapjas! Hammer die airco maar met nieuwe sessies. Doet die module nog iets nuttigs! :+
M.v.Veelen schreef op zaterdag 7 juli 2018 @ 23:51:
Al versta ik niet wat je hier zegt, ik hoop het ook, hahahaha.
Welke gegevens wil je uiteindelijk kunnen lezen en schrijven via een scriptje?

Er moet nog gezocht naar een getvalue-achtig iets, maar dat lijkt me getdatapointvalue ipv set...
Found it!
code:
1
{"command":"getdatapointvalue","data":{"sessionID":"xxxx","uid":"all"}}

Response (als list, nu nog met 1 UID):
code:
1
2
3
4
5
6
{"success":true,"data":{"dpval":[{"uid":1,"value":0,"status":0},{"uid":2,"value":4,"status":0},{"uid"
:4,"value":3,"status":0},{"uid":5,"value":10,"status":0},{"uid":9,"value":250,"status":0},{"uid":10,"value"
:260,"status":0},{"uid":12,"value":0,"status":0},{"uid":13,"value":18,"status":0},{"uid":14,"value":0
,"status":0},{"uid":15,"value":0,"status":0},{"uid":35,"value":180,"status":0},{"uid":36,"value":300
,"status":0},{"uid":37,"value":180,"status":0},{"uid":181,"value":0,"status":0},{"uid":182,"value":0
,"status":0},{"uid":183,"value":0,"status":0},{"uid":184,"value":0,"status":0}]}}
Maar voor hem is het ook al laat, dus mss dat hij op een verloren momentje nog even ernaar wil kijken.
Vanavond gaat 'm dat i.d.d. niet worden! Misschien morgen.

Klopt mijn idee over de temperaturen in die tabel boven?

[ Voor 30% gewijzigd door Verwijderd op 08-07-2018 00:08 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Alles wat in mijn tabel staat zou ik willen kunnen aansturen met 1 script. Om nu zoveel aparte scripts te maken en dat x 2 is niet zo netjes..... Dat van de temperatuur klopt inderdaad. Al kan ik volgens mij alleen hele graden instellen. Ben benieuwd of ik ook halve graden of zelfs tienden van graden in kan stellen mbv het script.

Ik wacht geduldig af, ik ben nu al zo blij dat het werkt en dat het geen doodlopende straat is gebleken.

Thanks you guys !!
Verwijderd schreef op zondag 8 juli 2018 @ 00:02:
[...]

Er moet nog gezocht naar een getvalue-achtig iets, maar dat lijkt me getdatapointvalue ipv set...
Found it!
code:
1
{"command":"getdatapointvalue","data":{"sessionID":"xxxx","uid":"all"}}

Response (als list, nu nog met 1 UID):
code:
1
2
3
4
5
6
{"success":true,"data":{"dpval":[{"uid":1,"value":0,"status":0},{"uid":2,"value":4,"status":0},{"uid"
:4,"value":3,"status":0},{"uid":5,"value":10,"status":0},{"uid":9,"value":250,"status":0},{"uid":10,"value"
:260,"status":0},{"uid":12,"value":0,"status":0},{"uid":13,"value":18,"status":0},{"uid":14,"value":0
,"status":0},{"uid":15,"value":0,"status":0},{"uid":35,"value":180,"status":0},{"uid":36,"value":300
,"status":0},{"uid":37,"value":180,"status":0},{"uid":181,"value":0,"status":0},{"uid":182,"value":0
,"status":0},{"uid":183,"value":0,"status":0},{"uid":184,"value":0,"status":0}]}}
Hiermee zou ik de status kunnen uitlezen toch? En eventueel de temperatuur die de airco's registreren op zolder en in de slaapkamer?

[ Voor 54% gewijzigd door M.v.Veelen op 08-07-2018 10:39 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben benieuwd welke JSON er uitkomt als je het scriptje aanpast zodat je deze request maakt (met juiste sessionID):
code:
1
{"command":"getdatapointvalue","data":{"sessionID":"xxxx","uid":"1"}}


Dat geeft deze --post-data (minus de quotes rond int):
code:
1
--post-data "{\"command\":\"getdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":1}}" \

[ Voor 30% gewijzigd door Verwijderd op 09-07-2018 00:09 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Heyyyy, daar zijn we weer :-)

Wat moet ik precies aanpassen / testen ?

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

M.v.Veelen schreef op dinsdag 10 juli 2018 @ 21:29:
Wat moet ik precies aanpassen / testen ?
De hele regel vervangen (voor de 2e wget, --post-data), zodat het getdatapointvalue doet i.p.v. setdatapointvalue.

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env bash

#temp hardcoded ip
AIRCO_IP=192.168.0.37
#AIRCO_IP=192.168.1.1
COOKIE=$(mktemp)

#pseudo: login
LOGIN_RESPONSE=$(mktemp)
wget --save-cookies ${COOKIE} \
     --keep-session-cookies \
     --post-data "{\"command\":\"login\",\"data\":{\"username\":\"operator\",\"password\":\"operator\"}}" \
     --output-document=${LOGIN_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'login','data':{'username':'operator','password':'operator'}}" \

#pseudo: get sessionID from login
SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')

#pseudo: set value on airco
ACTION_RESPONSE=$(mktemp)
wget --load-cookies ${COOKIE} \
     --post-data "{\"command\":\"getdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":1}}"\
     --output-document=${ACTION_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     http://${AIRCO_IP}/api.cgi
#     --post-data "{'command':'setdatapointvalue','data':{'sessionID':'${SESSION_ID}','uid':1,'value':1}}" \

#pseudo: debugging

echo '-----------'
echo 'DEBUGGING'
echo '-----------'
echo "sessionID: [${SESSION_ID}]"
echo '-----------'
echo 'login response:'
cat ${LOGIN_RESPONSE}
echo '-----------'
echo 'action response:'
cat ${ACTION_RESPONSE}
echo '----------'

#cleanup
if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi


script aangepast en dit krijg ik:
pi@pidomoticz:~ $ sh airco_zolder_on.sh
--2018-07-10 22:05:44-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78 [application/json]
Saving to: ‘/tmp/tmp.zBW9giqtT6’

/tmp/tmp.zBW9giqtT6 100%[======================================================================>] 78 --.-KB/s in 0s

2018-07-10 22:05:44 (5.18 MB/s) - ‘/tmp/tmp.zBW9giqtT6’ saved [78/78]

--2018-07-10 22:05:44-- http://192.168.0.37/api.cgi
Connecting to 192.168.0.37:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 64 [application/json]
Saving to: ‘/tmp/tmp.xNpTSQ8BPF’

/tmp/tmp.xNpTSQ8BPF 100%[======================================================================>] 64 --.-KB/s in 0s

2018-07-10 22:05:45 (4.16 MB/s) - ‘/tmp/tmp.xNpTSQ8BPF’ saved [64/64]

-----------
DEBUGGING
-----------
sessionID: [420t7c232Y88e32Ok1S9tMhLtp5lx9v]
-----------
login response:
{"success":true,"data":{"id":{"sessionID":"420t7c232Y88e32Ok1S9tMhLtp5lx9v"}}}-----------
action response:
{"success":true,"data":{"dpval":{"uid":1,"value":0,"status":0}}}----------
Zet ik de airco aan, dan is de laatste regel:
{"success":true,"data":{"dpval":{"uid":1,"value":1,"status":0}}}----------
value=1, dus de unit staan dan aan.

[ Voor 97% gewijzigd door M.v.Veelen op 10-07-2018 22:38 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
@Verwijderd Denk je dat het huidige script 'veralgemeniseerd' kan worden zodat het aangeroepen kan worden met enkele parameters zodat er niet rond de 20 separate scripts hoeven te worden gemaakt? Want dan wacht ik liever met zelf fröbelen.... :)

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

Verwijderd

M.v.Veelen schreef op woensdag 11 juli 2018 @ 21:15:
@Verwijderd Denk je dat het huidige script 'veralgemeniseerd' kan worden zodat het aangeroepen kan worden met enkele parameters.
Ik had gister een ranzige input parser geschreven. Net even de twee scriptjes gecombineerd.

$ ./airco
usage: ./airco ip set|get option [value]
$ ./airco 192.168.0.23 set
available actions: power mode speed vane setpoint return alarm
$ ./airco 192.168.0.23 set power
available [power] options: on off
$ ./airco 192.168.0.23 set power on


Bash:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/usr/bin/env bash
#Airconwithme script (airconwithme.com)
#Written by KingOfDois. BSD 3-clause license.
USAGE="usage: ${0} ip set|get option [value]"

#pseudo: login credentials.
#security note: wget leaks user/password in process list
if [ -z "${AIRCO_PASSWORD}" ]; then
  AIRCO_PASSWORD=operator
fi
if [ -z "${AIRCO_USER}" ]; then
  AIRCO_USER=operator
fi
#pseudo: 1st argument is IP
if [ -z "${1}" ]; then
  echo ${USAGE}
  exit 1
else
  AIRCO_IP="${1}"
fi
#pseudo: 2nd argument is set|get
if [ "${2}" != "set" ] && [ "${2}" != "get" ]; then
  echo ${USAGE}
  exit 1
fi
DIRECTION=${2}
#pseudo: more variables
ACTION=${3}
DO=${4}
VALUE=0
EXIT=0

#-------------------------------------
#pseudo: functions
function stderr () {
  cat - 1>&2
}



#-------------------------------------
#pseudo: action table
ACTIONS=(power mode speed vane setpoint return alarm)
UIDS=(1 2 4 5 9 10 14)

#pseudo: select uid from action
FOUND=0
for i in "${!ACTIONS[@]}"
do
    if [ "${ACTIONS[${i}]}" == "${ACTION}" ]; then
        FOUND=1
        WORK_UID=${UIDS[${i}]}
    fi
done
if [ ${FOUND} -eq 0 ]; then
  echo "available actions: ${ACTIONS[@]}"
  exit 1
fi


#-------------------------------------
#pseudo: work the $ACTION / $VALUE with $uid available
if [[ "${DIRECTION}" == "set" ]]; then

if [[ "${ACTION}" == "power" ]]; then OPTIONS=(on off); VALUES=(1 0); fi
if [[ "${ACTION}" == "mode" ]]; then OPTIONS=(auto heat dry fan cool); VALUES=(0 1 2 3 4); fi
if [[ "${ACTION}" == "speed" ]]; then OPTIONS=(1 2 3 4); VALUES=(1 2 3 4); fi
if [[ "${ACTION}" == "vane" ]]; then OPTIONS=(1 2 3 4 swing); VALUES=(1 2 3 4 10); fi

if [[ "${ACTION}" == "setpoint" ]]; then
  if [ "${DO}" == "" ]; then
    echo "value: 180 till 300 (18.0 till 30.0 degree C)"
    exit 1
  else
    VALUE=$DO;
  fi
fi

fi

#pseudo: now select the proper value based on the action
if [ "${OPTIONS}" != "" ]; then
  FOUND=0
  for i in "${!OPTIONS[@]}"
  do
      if [ "${OPTIONS[${i}]}" == "${DO}" ]; then
          FOUND=1
          VALUE=${VALUES[${i}]}
      fi
  done
  if [ ${FOUND} -eq 0 ]; then
    echo "available [${ACTION}] options: ${OPTIONS[@]}"
    exit 1
  fi
fi








#-------------------------------------
COOKIE=$(mktemp)


#pseudo: login
LOGIN_RESPONSE=$(mktemp)
LOGIN_ERROR=$(mktemp)
wget --save-cookies=${COOKIE} \
     --keep-session-cookies \
     --post-data="{\"command\":\"login\",\"data\":{\"username\":\"${AIRCO_USER}\",\"password\":\"${AIRCO_PASSWORD}\"}}" \
     --output-document=${LOGIN_RESPONSE} \
     --header="Content-Type: application/json" \
     --header="Accept: application/json" \
     --tries=3 \
     --timeout=30 \
     http://${AIRCO_IP}/api.cgi 2> ${LOGIN_ERROR}
LOGIN_RC=$?
if [ "${LOGIN_RC}" -ne 0 ]; then
  cat ${LOGIN_ERROR}|stderr
  EXIT=1
fi
if [ "$(grep -c '"success":true' ${LOGIN_RESPONSE})" -ne 1 ]; then
  echo "something went wrong while logging in"|stderr
  echo "response: $(cat ${LOGIN_RESPONSE})"|stderr
  EXIT=1
fi

#pseudo: get sessionID from login
SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')


#---------------------------------
if [ "${SESSION_ID}" != "" ]; then
  ACTION_RESPONSE=$(mktemp)
  ACTION_ERROR=$(mktemp)

  if [ "${DIRECTION}" == "set" ]; then
    POST_DATA="{\"command\":\"setdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID},\"value\":${VALUE}}}"
  else
    POST_DATA="{\"command\":\"getdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID}}}"
  fi

  wget --load-cookies=${COOKIE} \
       --post-data="${POST_DATA}" \
       --output-document=${ACTION_RESPONSE} \
       --header="Content-Type: application/json" \
       --header="Accept: application/json" \
       --tries=3 \
       --timeout=30 \
       http://${AIRCO_IP}/api.cgi 2> ${ACTION_ERROR}
  ACTION_RC=$?
  if [ "${ACTION_RC}" -ne 0 ]; then
    cat ${ACTION_ERROR}|stderr
    EXIT=1
  fi
  if [ "$(grep -c '"success":true' ${ACTION_RESPONSE})" -eq 1 ]; then
    if [ "${DIRECTION}" == "set" ]; then
      echo "saved";
    else
      RESPONSE_VALUE=$(awk -F ',"value":' '{print $2}' ${ACTION_RESPONSE}|awk -F ',"status"' '{print $1}')
      #sed 's/\"//g'
      echo "${RESPONSE_VALUE}"
    fi
  else
    echo "${DIRECTION} failed"|stderr
    echo "response: $(cat ${ACTION_RESPONSE})"|stderr
    EXIT=1
  fi
#end if SESSION_ID
fi



#---------------------------------------------
#cleanup
if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
if [ -f "${LOGIN_ERROR}" ]; then rm ${LOGIN_ERROR}; fi
if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi
if [ -f "${ACTION_ERROR}" ]; then rm ${ACTION_ERROR}; fi

exit ${EXIT}


Wat heb ik er toch een zooi van gemaakt... :D

[ Voor 20% gewijzigd door Verwijderd op 17-07-2018 17:27 ]


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Wow....!

Ik heb de code in airco.sh gezet en beide airco's geprobeerd. Helaas gaan ze niet aan met dit script en kan ik niet verder testen. Het lijkt wel goed te gaan volgens de output, maar de units blijven uit.

Ik zie:
pi@pidomoticz:~ $ ./airco.sh 192.168.0.56 set power on
------------------
Input parsing complete.
VALUE: 1
UID: 1
------------------
--2018-07-12 11:18:06-- http://192.168.0.56/api.cgi
Connecting to 192.168.0.56:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78 [application/json]
Saving to: ‘/tmp/tmp.mngvsbQg3V’

/tmp/tmp.mngvsbQg3V 100%[==================================================================================>] 78 --.-KB/s in 0s

2018-07-12 11:18:06 (2.06 MB/s) - ‘/tmp/tmp.mngvsbQg3V’ saved [78/78]

--2018-07-12 11:18:06-- http://192.168.0.56/api.cgi
Connecting to 192.168.0.56:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 28 [application/json]
Saving to: ‘/tmp/tmp.HLxSxvxatw’

/tmp/tmp.HLxSxvxatw 100%[==================================================================================>] 28 --.-KB/s in 0s

2018-07-12 11:18:06 (1.63 MB/s) - ‘/tmp/tmp.HLxSxvxatw’ saved [28/28]

saved
pi@pidomoticz:~ $
'get' geeft bij alles ook een '0':
pi@pidomoticz:~ $ ./airco.sh 192.168.0.56 get setpoint
------------------
Input parsing complete.
VALUE: 0
UID: 9
------------------
--2018-07-12 11:29:17-- http://192.168.0.56/api.cgi
Connecting to 192.168.0.56:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78 [application/json]
Saving to: ‘/tmp/tmp.Eaz02zENJx’

/tmp/tmp.Eaz02zENJx 100%[==================================================================================>] 78 --.-KB/s in 0s

2018-07-12 11:29:17 (3.17 MB/s) - ‘/tmp/tmp.Eaz02zENJx’ saved [78/78]

--2018-07-12 11:29:17-- http://192.168.0.56/api.cgi
Connecting to 192.168.0.56:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 64 [application/json]
Saving to: ‘/tmp/tmp.u0DEXG62p1’

/tmp/tmp.u0DEXG62p1 100%[==================================================================================>] 64 --.-KB/s in 0s

2018-07-12 11:29:17 (2.71 MB/s) - ‘/tmp/tmp.u0DEXG62p1’ saved [64/64]

read value setpoint: 0

[ Voor 30% gewijzigd door M.v.Veelen op 12-07-2018 11:30 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Als VALUE wordt in dit script een integer meegegeven en volgens mij verwacht die airco een string als waarde bij het power commando( en waarschijnlijk bij alle commandos)
Je kunt het even uittesten door de volgende code even op regel op regel 76 in te voegen.
if [[ "${ACTION}" == "power" ]]; then
if [ "${DO}" == 1 ]; then
VALUE="1";
else
VALUE="0"
fi

[ Voor 8% gewijzigd door Ben(V) op 12-07-2018 14:14 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
@Ben(V) Dat werkte prima voor het uitzetten van de unit, alleen het aanzetten (nog) niet.

Edit: logisch, want in jouw voorbeeld staat alleen value '1' |:(

[ Voor 27% gewijzigd door M.v.Veelen op 12-07-2018 15:52 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Ik denk dat die airco json verwacht en dan is een integer echt iets anders dan een string.
Het kan zijn dat het met de waarde 0 wel goed gaat maar met 1 niet omdat de default misschien wel uit gaan is.

Ik kan het verkeerd hebben maar even die paar regels erbij zetten, even testen en je weet het.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ik heb het getest met die extra regels en dat werkt. Heb het ook met value '0' geprobeerd en dat werkt ook, maar ik heb dat gewoon in jouw code aangepast, verder niets.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 19:58
Je hoeft niets aan te passen.
Het power commando heeft slechts twee mogelijkheden en mijn stukje script maakt van de integer 1 een string "1" en anders wordt een string "0"(de else tak) gebruikt.

Alles anders dan 1 zet dus de airco uit.

Overigens denk ik dat dit voor alle commandos gedaan moet worden, want ik denk dat de andere commandos ook strings verwachten en geen integers.
Maar misschien moet @Verwijderd daar zelf maar even naar kijken, want ik vind het niet netjes zijn script zonder zijn medeweten helemaal te gaan aanpassen.

Wat gebruik je eigenlijk als huisautomatisering?
Domoticz, Openhap of iets anders?

[ Voor 8% gewijzigd door Ben(V) op 12-07-2018 16:09 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 08-09 17:52
Ah, OK. Nee, mss heeft hij wel een goede oplossing.

Ik gebruik Domoticz als huisautomatisering en hoop dit dan goed te kunnen combineren met elkaar :-)

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

Verwijderd

Ik was er al bang voor dat die parser op de airco 't als een string zou zien. Zal vanavond/morgen even wat "rommelen". ;)

Jammer dat mijn (Everglades) airco alleen 1-way IR heeft. En buttons met dual function (on+off). Hierdoor kan de actuele status en status in software out-of-sync zijn (software zend "power" om hem aan te zetten, maar de airco gaat uit). Als ik mijn airco werkend wil krijgen, moet ik een microcontroller aan de statusleds hangen zodat ik die kan uitlezen. :(
Ik moet hem nog openschroeven om te kijken hoe hij functioneert (in de hoop op UART).
Pagina: 1 2 Laatste

Dit topic is gesloten.