ich möchte mit JsonMod mein Hydrawise einbinden:
auf folgendem Link:
https://app.hydrawise.com/api/v1/statusschedule.php?api_key=D00A-E6D0-E6D0-AF6F (https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX)
erhalte ich folgendes:
{"time":1584950090,"nextpoll":60,"message":"","simRelays":1,"options":1,"expanders":[],"sensors":[{"input":0,"type":1,"mode":2,"timer":30,"offtimer":30,"relays":[{"id":280143},{"id":280234},{"id":280238}]}],"relays":[{"relay_id":280143,"time":1576800000,"type":110,"run":0,"relay":1,"name":"Zna 1","period":259200,"timestr":""},{"relay_id":280234,"time":1576800000,"type":110,"run":0,"relay":2,"name":"Zna 2","period":259200,"timestr":""},{"relay_id":280238,"time":1576800000,"type":110,"run":0,"relay":3,"name":"Zna 3","period":259200,"timestr":""}]}
bzw.:
time 1584950090
nextpoll 60
message ""
simRelays 1
options 1
expanders []
sensors
0
input 0
type 1
mode 2
timer 30
offtimer 30
relays
0
id 280143
1
id 280234
2
id 280238
relays
0
relay_id 280143
time 1576800000
type 110
run 0
relay 1
name "Zna 1"
period 259200
timestr ""
1
relay_id 280234
time 1576800000
type 110
run 0
relay 2
name "Zna 2"
period 259200
timestr ""
2
relay_id 280238
time 1576800000
type 110
run 0
relay 3
name "Zna 3"
period 259200
timestr ""
Response-Header:
Connection keep-alive
Content-Encoding gzip
Content-Length 233
Content-Type application/json
Date Mon, 23 Mar 2020 07:54:50 GMT
Server nginx
Vary Accept-Encoding
X-Frame-Options SAMEORIGIN
Request-Header:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding gzip, deflate, br
Accept-Language de,en-US;q=0.7,en;q=0.3
Connection keep-alive
Host app.hydrawise.com
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:74.0) Gecko/20100101 Firefox/74.0
mein List:
Internals:
API_LAST_RES 1584951361.24842
DEF https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX
FUUID 5e786973-f33f-0c99-e8f2-f310fc5aec80063d
NAME hydraSzilvas99
NEXT 2020-03-23 09:30:00
NR 87
NTFY_ORDER 50-hydraSzilvas99
SOURCE https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX (200)
STATE ???
SVN 21487 2020-03-22 23:34:07
TYPE JsonMod
CONFIG:
IN_REQUEST 0
SOURCE https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX
SECRET:
READINGS:
Attributes:
interval */15 * * * *
room KERT
wie weiter?, brauche Hilfe.
In kann nicht beurteilen, ob das Veroeffentlichen der api_key Probleme nach sich zieht, ich empfehle es zu anonymisieren.
Aber es hat mir erlaubt eine "billige" Alternative zu testen :)
define hw at +*00:01 { HttpUtils_NonblockingGet({\
url=>"https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX",\
callback=>sub($$$){ Log 1,"hw:$_[1]" if($_[1]);; json2reading($defs{hw},$_[2]) } }) }
danke, ich werde es ausbauen...
denn api_key werde ich dann äendern, momentan macht es keine Probleme.
Moin,
zum API key:
bei JsonMod:
set hydraSzilvas99 secret KEY D00A-xxxx-xxxx-xxxx
Dann die def ändern auf
... https://app.hydrawise.com/api/v1/statusschedule.php?api_key=[KEY]
Dann passiert Dir das nie wieder.
Um den Unterschied von billiger Alternative zum Original zu erleben :P:
Schreib mal bitte welche Informationen aus dem JSON Du (evtl wie formatiert) angezeigt haben möchtest. Ich mach Dir eine readingList draus :)
danke, du hast PM
Ich jetzt? Nö..
Aber mach doch hier weil: dann können andere aus dem hier lernen. JsonMod hat ja den Sinn das es immer individuell (nach Anwendung) ist und da will ich den Wissentransfer ermöglichen.
sorry, du hast vollkommen Recht!!
folgende readings erhalte ich nach senden von:
https://app.hydrawise.com/api/v1/statusschedule.php?api_key=XXXX
time 1584957880
nextpoll 60
message ""
simRelays 1
options 1
expanders []
sensors
0
input 0
type 1
mode 2
timer 30
offtimer 30
relays
0
id 280143
1
id 280234
2
id 280238
relays
0
relay_id 280143
time 1576800000
type 110
run 0
relay 1
name "Zna 1"
period 259200
timestr ""
1
relay_id 280234
time 1576800000
type 110
run 0
relay 2
name "Zna 2"
period 259200
timestr ""
2
relay_id 280238
time 1576800000
type 110
run 0
relay 3
name "Zna 3"
period 259200
timestr ""
eigentlich möchte ich alle Daten in readings, bis Rel 1 reicht es mir, den Rest solte ich weiter kompletieren.
volgende Befehle möchte ich noch realisieren:
https://app.hydrawise.com/api/v1/setzone.php?api_key=XXXX&action=run&relay_id=280143&custom=10
https://app.hydrawise.com/api/v1/setzone.php?api_key=XXXX&action=stop&relay_id=280143
R1: relay_id 280143
R2: relay_id 280234
R3: relay_id 280238
# Actions must be one from this list.
action_list = [
'run', # Run a zone for an amount of time.
'runall', # Run all zones for an amount of time.
'stop', # Stop a zone.
'stopall', # stop all zones.
'suspend', # Suspend a zone for an amount of time.
'suspendall' # Suspend all zones.
]
hier auch nur einen Anfang den ich weiter ausarbeite.
Solltest Du wirklich _alle_ Werte in readings packen wollen ist Rudis Ansatz geeigneter.
JsonMod ist in der gegenteiligen Situation spannend: wenn ich gezielt auf einzeln Elemente des JSON zugreifen möchte und die dann in Readings umwandle.
mit dieser readingList:
single(jsonPath('$.relays[0].run'), 'Garten_Sprinkler');
single(jsonPath('$.relays[1].run'), 'Rasen_Sprinkler');
single(jsonPath('$.relays[2].run'), 'Beet_Sprinkler');
bekommst Du den Wert aus 'run' für jedes Relais. Nach meinem Verständnis handelt es sich ja um Bewässerung (?). Die Readings habe ich jetzt fiktiv benannt aber ich denke das System erklärt sich. Mir fehlt jetzt das Wissen um das System um erkennen welche weiteren Werte (in FHEM) für Dich als Anwender jetzt relevant sein könnten. Vtml reicht das aber als Startpunkt für Dich und ich helfe gern weiter.
als Tipp diese Seite: https://jsonpath.herokuapp.com/
Da kannst Du links das JSON reinkopieren und unten die JSONPath Querys eingeben und da siehst Du sofort ob das rauskommt was Du möchtest.
Als parser "Goessner" einstellen. Den Parser in JsonMod habe ich selber implementiert. Immer wenn dort was anderes rauskommt als bei mir muss ich nacharbeiten ;)
So wie im Anhand sieht das Ergebnis aus.
Ich sehe gerade das der KEY dann doch unter "SOURCE" erscheint - das ändere ich ab.
edit: Done!