Zur besten Antwort gewählt
Jul 16, 2017 - 08:35
const getContent = function(url) {
// return new pending promise
return new Promise((resolve, reject) => {
// select http or https module, depending on reqested url
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
// temporary data holder
const body = [];
// on every content chunk, push it to the data array
response.on('data', (chunk) => body.push(chunk));
// we are done, resolve promise with those joined chunks
response.on('end', () => resolve(body.join('')));
});
// handle connection errors of the request
request.on('error', (err) => reject(err))
})
};
getDeviceStatus(
"Aussen Bereich",
"TemperaturLuftfeuchteAußen",
{"value":"weatherTemp","extMeta":"-40.0-80.0","scale":"0.1"},
function(err, status) {
if(!err) {
var temp = status;
getContent('http://192.168.0.73/ATemp?:=' + temp)
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
}
);
so musste das gehen
Von
jetzt wenn du das script abspeicherst und mit dem play button testest, sollte die aktuelle temp im display erscheinen
Von
Ok, dachte ich mir schon, dass es so einfach nicht geht :-) .
Ich muss jetzt leider eine Zeit lang ausser Haus, kann dann erst am späteren Nachmittag wieder weitermachen. Nochmals besten Dank einmal.
Von
nun mal was anderes, willst du von der ccu ganz weg oder warum möchtest du es mit AM versuchen?
Von
ok
Von
So, bin wieder da :-) . Ich habe die CCU2 seit vielen Jahren mit einer großen Anzahl an Homematic Geräten eigentlich sehr erfolgreich im Einsatz. Was mich am meisten an ihr stört, ist einmal die langsame Reaktion auf der WebUI (Hardware zu schwach) und zum zweiten diese furchtbare Skriptsprache.
Bezüglich der Geschwindigkeit habe ich schon versucht sie durch einen Raspberry 2 plus Funkmodul zu ersetzen, läuft superschnell, ist mir aber noch etwas zu unsicher. Eine neue Möglichkeit wäre glaube ich das mediola Gateway V5 plus, das ist mir aber ehrlich gesagt zu teuer.
Bezüglich der doch sehr exotischen CCU2 Skriptsprache wollte ich es nun mal mit einer Standardskriptsprache, wie eben dem Javascript versuchen, aber da fehlt mir doch noch einiges an Knowhow. Habe zwar jahrzehntelang in Assembler und ANSI C programmiert, aber (leider) nie etwas in Richtung OOP (z.B. C++). Deshalb tu ich mir beim Javascript extra schwer, bin aber inzwischen auch schon 65 und damit nicht mehr ganz so lernfähig :-) . Hab's vor einigen Jahren auch schon mal mit xxxx und PHP versucht, damit tat ich mir wesentlich leichter als mit dem Javascript.
Ich hab eine ziemliche Menge an Programmen auf der CCU2 laufen, vieles davon ließe sich sicher auf dem AM zusammenklicken, gibt aber auch einige spezielle Sachen, die nur mit skripten ginge. Mich interessiert und reizt die Geschichte mit dem AM einfach auch. Dazu kommt noch, dass ich seit dem Vorjahr mit dem NEO Creator eine schon ziemlich umfangreiche Visualisierung aufgebaut habe, die total super auf allen möglichen Geräten läuft und mich noch nie im Stich gelassen hat. Von dem bin ich wirklich überzeugt.
Wie geht man das eigentlich am besten an, wenn man sich auf die Schnelle Javascript aneignen will :-) ?
So, werde mich jetzt wieder etwas mit dem Skript beschäftigen.
Von
Apropos, habe inzwischen das Updaten der Außentemperatur auf meinem Infodisplay über die CCU2 deaktiviert und das Skript auf dem AM scheint tatsächlich zu funktionieren, die Temperatur auf dem Infodisplay wurde weiterhin upgedatet :-) .
Habe übrigens in der Zwischenzeit ein JavaScript Tutorial auf Youtube mit 37 Teilen ausgesucht und schaute mir mal einige Videos davon an. Bei den ersten 5 Videos war mal kein Unterschied zum ANSI C zu sehen, das waren aber auch nur die einfachsten Grundlagen.
Von
Das ist gut, also wird die temperatur im AM task aktualisiert?
Ich wurde die sprache jetzt nicht so direkt lernen, sondern einfach wenn ein problem auftaucht im net suchen.
Nun würde ich nicht sagen dass die ccu schlechter ist mit ihrer script sprache, der vorteil dort ist, das alles was eigentlich damit machbar ist, schon in dem forum ist, die sachen laufen...Mit dem Neo ist das schon eine sache, auch der scripteditor ist nicht das, was ich erwartet habe...Aber ich finde einiges wird man wohl anstellen können :)
Von
Ja, läuft tatsächlich mit der Temperatur, hab's grade nochmals gecheckt. Wenn ich den Task deaktiviere, laufen die Werte zwischen Arduino Infodisplay und den Creator NEO Visualisierungen bald auseinander, sprich die Temperatur am Infodisplay bleibt stehen.
Bezüglich Sprache lernen habe ich es eigentlich bisher auch schon so gehalten, wie du es vorschlägst. Solange probieren, solange die "alten" Kenntnisse halt ausreichen, andernfalls im Netz graben, bis man das Richtige findet :-).
Naja, ich hab mit der CCU2 Skriptsprache schon meine Probleme, obwohl ich mich schon jahrelang damit herumschlage. Mochte sie eigentlich nie richtig. Funktionieren tut sie, das stimmt schon, wenn man mal rausgefunden hat wie :-). Wenn man natürlich die Codegröße zwischen ihr und dem JavaScript vergleicht, das sind schon ordentliche Unterschiede. Für diese Aufgabe, die wir (besser gesagt du :-) da gerade gelöst haben, braucht die CCU2 gerade mal 5 Zeilen, JavaScript eine Menge mehr.
Zur Zeit möchte ich einfach mal versuchen, parallel zur CCU2 so viel wie möglich mit dem AM nachzuempfinden, das Erfolgserlebnis alleine, wenn es mal funktioniert, ist mir das schon wert. Schätze, dass sich der AM sicherlich auch weiterentwickeln wird.
Von
Seit heute funktioniert der Task mit dem Skript leider nicht mehr :-( .
Hatte vor 2 Tagen an anderer Stelle hier einen Fehler meines NEO Servers geschildert, der AM konnte plötzlich nichts mehr vom Server zurücklesen, eine Folge davon war, dass der Status des Servers in der Taskliste nicht mehr geupdatet werden konnte (stattdessen wurden lauter Fragezeichen angezeigt). Der Upload der Tasks zum Server hin war nie ein Problem, sie funktionierten bis dato auch alle.
Nachdem das geschilderte Problem bisher niemand interessiert hatte, habe ich heute den NEO Server komplett deinstalliert und danach wieder neu installiert. Dann habe ich noch sicherheitshalber das NEO Server Gateway aus dem AM gelöscht, neu suchen lassen und importiert. Klappte auch alles wie es soll, außer dass ich sofort wieder beim Auswählen des Servers im AM die Fehlermeldung "Informationen konnten nicht abgerufen werden" hatte.
Nach dem neuen Upload der Tasks auf den Server musste ich feststellen, dass der Task mit dem Temperaturskript beim Senden einer neuen Temperatur durch den Homematic Außensensor nicht mehr ausgelöst wurde (passiert normalerweise glaube ich so alle 2-3 Minuten). Die Temperatur auf dem Arduino Infodisplay wurde von da an auch nicht mehr geupdatet, was gestern noch super funktioniert hat. Löst man den Skript dagegen manuell im Skripteditor aus, erscheint sofort die aktuelle Temperatur auf dem Infodisplay. Das Skript selbst funktioniert also noch immer, hätte mich auch gewundert wenn nicht.
Ob die anderen Tasks auch nicht mehr ausgelöst werden, kann ich jetzt nicht sagen, da die zeitgesteuert erst wieder am Abend schlagend werden.
Werde aber versuchen, einen neuen zeitnahen Task anzulegen, um zu sehen, ob die ganze Geschichte überhaupt noch funktioniert.
Von
hast du den neoserver konfiguriert mit dem config tool neo...dort kannst du ein passwort einsetzen
dann musst du im neo auch das passwort eintragen
wenn nicht dann mache es so mit dem config tool neo, 1.4.9
deinstalliere server
lösche von neo
installiere neu
mach das mit dem config tool
wähle dort neo server aus
suche den server wieder in neo
dort passwort eingeben speichern
kommt auch jetzt kein zugriff auf neo server wie vorher im AM
Von
das testen im scripteditor geht, weil es nicht vom neo server ausgeführt wird sondern vom neo aus
Von
Hallo, besten Dank mal für die Tipps!
Passwort hatte ich im Config Tool gesetzt, auch heute wieder bei der Neuinstallation. Werde aber deine Liste mal abarbeiten.
Der Server tut scheinbar wirklich nicht mehr, hatte gerade einen neuen Task angelegt, der 5 Minuten später eine Email senden sollte, ist nicht passiert. Hatte bisher immer geklappt.
Von
wo läuft der server?
Von
dann versuche ohne den passwort erstmal
Von
um zu sehen ob er dann läuft
Von
Ich glaube, das Problem ist gelöst, eine Zeile deiner Liste war es :-) , nämlich, dass das Serverpasswort auch im NEO Server Gateway im Creator NEO eingetragen werden muss. Dachte, das Passwort ist nur dafür da, dass man in das Setup des Servers rein kommt.
Der Fehler des Zurücklesens ist weg und die Tasks funktionieren auch wieder :-)
Was für mich trotzdem ein Rätsel bleibt, warum ist dieser Zurücklesefehler plötzlich nach einem Tag aufgetreten, ohne dass ich an den Passwörtern etwas geändert hatte. Einen Tag lang hatte das Ganze nämlich vorher schon funktioniert. Egal, werde weiter beobachten :-) .
Apropos, hab gestern noch bis nach Mitternacht JavaScript Tutorials gelesen, bei den einfachen Sachen, die C-like sind, kein Problem, aber bei den Promises schlackern die Ohren und raucht der Kopf :-) . Ob ich das jemals durchblicken werde, ich weiß nicht ...
Danke nochmal und dir einen schönen Tag noch.
Von
Nachtrag: der Server läuft auf einem Windows 10 Mini-PC
Von
nun vielleicht solange der server so lief....
nun ja wir haben auch den Sebastian hier von mediola
einfach her mit den problemen, zu lösen ist alles, man braucht kein programmierer sein :)
Von
Ok, passt :-)
Von
So, hat mir keine Ruhe gelassen und habe nochmal scharf nachgedacht (bei den 65 Jahre alten grauen Zellen manchmal nicht mehr so einfach :-) : ich glaube mich zu erinnern, dass ich das Passwort im NEO Server erst später im nachhinein eingetragen habe. Das Config Tool kannte ich nämlich zuerst gar nicht und brauchte es erst, als ich die Ortskoordinaten wegen des Sonnenauf- und -untergangs ändern musste. Auch dann erst hatte ich Zugriff auf das Passwort und habe es wohl eingetragen, ohne zu wissen oder zu erkennen, dass man es auch im Creator eintragen muss.
Sorry für den ungewollt erzeugten Aufwand :-)
Von
Also gibt es bei computern meistens eine erklärung :)
Von
Sieht wohl so aus ... :-)
Von
Ok
dann kannst du auch den thread mit dem neo server problem ergänzen und die lösung bzw. den fehler erklären...
Auch einen schönen Tag noch!!!
Von
Hatte ich schon gemacht!
Von
Hallo, möchte an dieser Stelle gerne eine Frage einwerfen. Im Prinzip hab ich das selbe vor. Jedoch sollen von einem Raumthermostat die gemessene Temperatur, die eingestellte Temperatur und die Luftfeuchtigkeit gemeinsam über einen http Aufruf an den Server gesendet werden, so dass sie in einem Datensatz in der Datenbank abgelegt wird. Hier scheitere ich leider mit meinem rudimentären Javascript wissen daran, wie ich die ausgelesenen Werte in globale Variablen schreibe, um sie anschließend gemeinsam zu senden. Hättet ihr da einen kleinen Denkanstoß für mich? Vielen Dank schon mal
Neuen Kommentar hinzufügen