Zur besten Antwort gewählt
Mai 23, 2017 - 06:06
musst du testen...
// diese funktion sendet ein http befehl und wird unten benutzt aus dem script die werte in klima zu schreiben
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
// abfrage der slider variable
getDeviceStatus(
"Status",
"STEMPDAIKIN",
{"value":"state","extMeta":"-2147483648-2147483647"},
function(err, status) {
if(!err) {
var power = 1;
var modus = 3;
var temp = status;
var frate= 7;
var fdir = 0;
// hier ist die aufruf der funktion oben um der url die variablen zu übergeben
// id=9 mit eigenem task id ersetzen
getContent('http://ip_klima/aircon/set_control_info?pow='+ power + '&mode=' + modus + '&stemp=' + temp+ '&f_rate=' + frate + '&f_dir=' + fdir)
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
}
);
da man im tasks nicht auf die variablen im sobald blcok nicht reagieren kann, musst du es mit so einem intervall im sobald block abfragen, wie auf dem bild. Das kannst du zum testen einsetzen aber es wird dann jede minute die url abgerufen und die werte reingeschrieben.
teste erstmal die funktion, ob alle werte richtig ankommen. Später muss man noch eine variable zur hilfe nehmen, und diese dann mit dem sliderwert vergleichen, nur wenn sie unterschiedlich sind sollte man in die url schreiben, den neuen wert.
wie gesagt erstmal die funktion testen, mit einem grösserem wert für interval, das nur einmal die url abgerufen wird, dann den task als inaktiv machen.
Von
Danke für den Input. Das muss ich dann mal testen.
Ich steuere jetzt schon die Klima mit Makros. Das musste ich so machen weil die URL immer alle Parameter haben möchte.
D.h. wenn man nur die Temperatur ändert muss man alle anderen Parameter auch übergeben.
Also habe ich für Kühlen und Wärmen für jede Temperatur einen eigenen Button mit Makro erstellt.
Das ist etwas blöd, geht aber nicht anders.
Was ich jetzt machen möchte ist folgendes.
1. Die entsprechenden Werte in NEO füllen
2. Über das Script per Button die Daten (URL mit Variablen) an die Klima senden
Ich muss dann mal schauen wie ich den Task auslösen. Mit einem HTTP-Request wird es schon gehen.
Ich melde mich wenn ich es getestet habe.
Von
So ganz geht es noch nicht.
Du hast in dem Script etwas stehen was ich nicht verstehe was ich damit machen soll.
// hier ist die aufruf der funktion oben um der url die variablen zu übergeben
// id=9 mit eigenem task id ersetzen
Von
Das ist kommentar aus anderem script
Eigentlich sollte es funktionieren wenn deine variable so heisst und der raum auch
Von
Du kannst das script mit dem playbutton aus ddem script editor starten dann musste log fehler zu sehen sein
Von
getContent('http://ip_klima/aircon/set_control_info?pow=1&mode=3&stemp=21&f_rate=7&f_dir=0')
Ersetze diese zeile oben so und teste ob es mit den werten direkt klappt
Von
Das Script geht mit dem Playbutton. Aber den Task starten per http://ip-Neo-server:8088/tm/http?test=1&auth=Passwort
geht noch nicht.
Von
Das musst du im sobald block eingeben und dann kein intervall benutzen
Du hast doch früher mit http befehlen tasks ausgelöst :)
Von
hast du mehrere tasks welche du mit http://ip-Neo-server:8088/tm/http?test=1&auth=Passwort auslöst?
versuche was anderes anzugeben.
Von
Das kann sein. Also am besten irgendwas wie daikin=1 oder so.
Von
ja eigentlich ist es egal was da steht, wichtig dass du weisst was es auslöst :)
Von
Keine weiteren Tasks mit http://ip-Neo-server:8088/tm/http?test=1&auth=Passwort vorhanden und es geht trotzdem nicht.
Von
was sagt log datei?
Von
Da sucht man sich nen Wolf und am Ende ist es der blöde NEO Server der obwohl er Antwortet {"XC_SUC":{}} einen Reboot braucht. Falls der Support von Mediola mitliest wäre es schön wenn dieser Bug behoben würde. Ich fahre den NEO Server in der Version 2.0.3 auf einem MAC Mini mit MacOS Sierra 10.12.5.
Von
also geht es nach dem reboot?
Neuen Kommentar hinzufügen