NEWS
Hydrawise RESTful API
-
Hallo,
ich habe als Steuergerät für meine Bewässerung ein Hydrawise HC12. Ich möchte dieses nun in meine IOBroker Oberfläche einbinden und habe mir einen API Key für die Restful API von Hydrawise generiert. Laut Doku sollte ich ja nun über den Link:
https://api.hydrawise.com/api/v1/setzone.php?action=run&api_key=meinkey&period_id=999&relay_id=5&custom=30
(meinen Key habe ich natürlich eingesetzt ;-))Ventil 5 für 30 Sekunden laufen lassen (als Test).
Habs im Firefox abgesetzt. Es kommt eine weiße Seite zurück und Ventil 5 macht nichts. Im Chrome kommt ein 500er.
-
Habe ich einen Denkfehler und hat jemand aktuelle Erfahrungen mit der API?
-
Wie kann ich den API-Call korrekt absetzen, wenn nicht über den Browser?
-
Kennt jemand eine andere Alternative mit dem Steuergerät zu kommunizieren?
Danke im Voraus!
-
-
@graubi77 die relayid ist nicht gleich der relay Nummer.
am besten hiermit die Relay ID auslesen
[Übersicht](https://api.hydrawise.com/api/v1/statusschedule.php?api_key=dein API Key) -
@intruder7 hi, wenn ich deinen Link nehme udn meine API einsetze bekomme ich eine json Antwort...
Frage: Was kann ich damit jetzt machen? Bin noch nicht so in der Materie udn muss viel fragen...
Grussund...hat jemand auch eine Hydrawise in iobroker eingebunden? Wenn ja kann derjenige hier mal screenshots posten udn mir erklären wie ich das auch umsetzen kann mit meiner?
-
@kusselin
Hier dazu mein SkriptAPI eintragen bei den xxxxx
und hydrawise wird regelmäßig abgefragt und die Datenpunkte gefülltconst praefix = "0_userdata.0.Bewaesserung.Hunter_Hydrawise."; //Grundpfad schedule('* * * * *', function () { var url = "https://app.hydrawise.com/api/v1/statusschedule.php?api_key=xxxx-xxxx-xxxx-xxxx" request({ url: url }, function (error, response, body) { CreateRelays(JSON.parse(body)); }); var url = "https://app.hydrawise.com/api/v1/customerdetails.php?api_key=xxxx-xxxx-xxxx-xxxx" request({ url: url }, function (error, response, body) { CreateCustomer(JSON.parse(body)); }); }) function CreateCustomer(data) { //log(data.controllers); if (existsState(praefix + 'Costumer_JSON') == false) { createState(praefix + 'Costumer_JSON'); } setState(praefix + 'Costumer_JSON', JSON.stringify(data), true); if (existsState(praefix + 'user_lastcontact') == false) { createState(praefix + 'user_lastcontact'); } setState(praefix + 'user_lastcontact', data.controllers[0].last_contact, true); if (existsState(praefix + 'user_status') == false) { createState(praefix + 'user_status'); } setState(praefix + 'user_status', data.controllers[0].status, true); } function CreateRelays(data) { if (existsState(praefix + 'Relays_JSON') == false) { createState(praefix + 'Relays_JSON'); } setState(praefix + 'Relays_JSON', JSON.stringify(data), true); if ("undefined" !== typeof data.relays) { //log(data.relays); var i; for (i = 0; i < data.relays.length; i++) { if (existsState(praefix + 'relay.' + i + '.id') == false) { createState(praefix + 'relay.' + i + '.id'); } setState(praefix + 'relay.' + i + '.id', data.relays[i].relay_id, true); if (existsState(praefix + 'relay.' + i + '.time') == false) { createState(praefix + 'relay.' + i + '.time'); } setState(praefix + 'relay.' + i + '.time', data.relays[i].time, true); if (existsState(praefix + 'relay.' + i + '.run') == false) { createState(praefix + 'relay.' + i + '.run'); } setState(praefix + 'relay.' + i + '.run', data.relays[i].run, true); if (existsState(praefix + 'relay.' + i + '.run_min') == false) { createState(praefix + 'relay.' + i + '.run_min'); } setState(praefix + 'relay.' + i + '.run_min', Math.round(data.relays[i].run / 60), true); if (existsState(praefix + 'relay.' + i + '.name') == false) { createState(praefix + 'relay.' + i + '.name'); } setState(praefix + 'relay.' + i + '.name', data.relays[i].name, true); if (existsState(praefix + 'relay.' + i + '.period') == false) { createState(praefix + 'relay.' + i + '.period'); } setState(praefix + 'relay.' + i + '.period', data.relays[i].period, true); if (existsState(praefix + 'relay.' + i + '.timestr') == false) { createState(praefix + 'relay.' + i + '.timestr'); } setState(praefix + 'relay.' + i + '.timestr', data.relays[i].timestr, true); if (existsState(praefix + 'relay.' + i + '.stop') == false) { createState(praefix + 'relay.' + i + '.stop'); } setState(praefix + 'relay.' + i + '.stop', data.relays[i].stop, true); if (existsState(praefix + 'relay.' + i + '.type') == false) { createState(praefix + 'relay.' + i + '.type'); } setState(praefix + 'relay.' + i + '.type', data.relays[i].type, true); } if ("undefined" !== typeof data.sensors) { //log(data.sensors); var i; for (i = 0; i < data.sensors.length; i++) { //log(data.sensors); } } } else { console.warn('Response in JSON nicht gefunden ! ') } }
-
@intruder7 Hi, hab ich gemacht.. DP werden auch befällt... wie kann ich sowas jetzt noch grafisch in VIS zb darstellen?
Gruss