ich weiss nicht genau welches script nicht geht, du kannst aber dieses benutzen:
// lokale Längen- und Breitenangabe anpassen
var latitude = "51.46";
var longitude = "7.16";
var ts = new Date();
// wenn man für "morgen" berechnen will
// ts.setDate(ts.getDate() + 1);
var date = ts.getFullYear() + '-' + ('0' + (ts.getMonth() + 1)).slice(-2) + '-' + ('0' + ts.getDate()).slice(-2);
var url = "http://api.sunrise-sunset.org/json?formatted=0&lat=" + latitude + "&lng=" + longitude + "&date=" + date;
var http = require('http');
var req = http.get(url, function(res) {
var body = '';
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
var jbody = JSON.parse( body );
console.log(body);
var status = jbody.status;
var curDate, sunrise, sunset, twilight_begin, twilight_end;
if (status == "OK") {
// Zeitangaben sind alle in UTC und müssen daten umformatiert werden
var d = new Date(Date.parse(jbody.results.sunrise));
curDate = ('0' + d.getDate()).slice(-2) + '.' + ('0' + (d.getMonth() + 1)).slice(-2) + '.' + d.getFullYear();
sunrise = d.toTimeString().slice(0,5);
d = new Date(Date.parse(jbody.results.sunset));
sunset = d.toTimeString().slice(0,5);
d = new Date(Date.parse(jbody.results.civil_twilight_begin));
twilight_begin = d.toTimeString().slice(0,5);
d = new Date(Date.parse(jbody.results.civil_twilight_end));
twilight_end = d.toTimeString().slice(0,5);
}
executeDeviceCommand(
"sun",
"sunrise",
{"value":"setValue","ext":sunrise},
function(err) {
err && console.error(err);
}
);
executeDeviceCommand(
"sun",
"sunset",
{"value":"setValue","ext":sunset},
function(err) {
err && console.error(err);
}
);
});
Von
Hallo Fonzo,
danke für Deine schnelle Antwort.
Im Juli 2017 wurde die Frage: "Wie kann man die Sonnenaufgang und Sonnenuntergang Zeiten darstellen " gestellt und dann u.a. auch von Dir beantwortet.
"zdenko33" hat dann einen Code/Skript zur Verfügung gestellt, dass von "demehl 42" nochmals überarbeitet wurde.
Ich selbst habe das Skript von "zdenko33" genommen, dass im AM auf meinem V5plus bis vor kurzem lief, jetzt aber leider nur noch den Status 400 ausgibt.
Ich brauche diese grafische Darstellung über ein Webseitenelement nicht, sondern nur den output über die VAR "sunrise" und "sunset".
Es ist vielleicht Spielerei, aber ich stelle die Daten (Zeiten) als Wert in meiner Fernbedienung für die Rollladensteuerung da.
Die eigentliche Steuerung läuft im AM in einem Task mit dem Astro-Block.
Ich habe mal irgendwo gelesen, dass man mit einem "Astro-Task" einen output in eine Variable erzeugen kann, ist mir aber nicht gelungen.
Hast Du eine Idee, wie man das verwirklichen kann?
Von
@volker33
Ah Du meinst Javascript
Dann kannst Du das hier nutzten
https://github.com/mourner/suncalc
Von
@pookylg man kann gerne raten aber ansonsten kann man nur auf das Bezug nehmen was auch geschrieben da steht. Und Java kann weder eine CCU noch einen Mediola Gateway. Hätte er gleich geschrieben das er das im Automation Manager mit Javascript machen will kann man auch gleich eine passende Antwort geben. Es hat sich ja aber jetzt durch ergänzende Informationen geklärt.
Von
Hallo Fonzo, danke für den Tipp. Ich werde mal sehen, was ich daraus machen kann.
Ich bin hier neu im Forum (als Aktiver :-)) und wusste nicht genau wie das Funktioniert. Ich hatte im Post direkt "Auf eine Frage stellen an zdenko33" geklickt und erst beim senden bemerkt, dass es öffentlich an "alle" geht. Und da im Post vom Juli 2017 alles steht war ich etwas sparsam mit meiner Ausführung. Werde es das nächste Mal beachten :-)
Von
Wir "unwissenden" sind froh über jede Hilfe
Von
@pookylg Mich würde mal interessieren wie Du das System Mediola überhaupt definierst? Das Mediola System unterstützt über 19 "Fremd" Gateways und 3 eigene Gateways. Das System unterstützt direkt 5 IR "Fremd" Gateways und 3 eigene IR Gateways. Zusätzlich noch die 7 Plugins für "Fremd" Heizungssysteme und 12 "Fremd" Kameras und 13 "Fremd" IP Geräte.
Die absolute Mehrheit aller NEO Plugins steuert also "Fremd" Systeme und dennoch gehören diese zum Mediola System weil Mediola eben eine Visualisierung für alle angebundenen Systeme darstellt.
Mir scheint es viel mehr so zu sein, das Du Dich darüber aufregst das man mit "Fremd" Gateways teilweise einzelne Fragestellungen und Probleme lösen kann, was mit einem AIO Gateway nicht möglich ist. Das liegt aber in der Natur der Sache das spezialisierte Gateways mehr können als ein Universalgateway. Eine CCU unterstützt Homematic aktueller und vollständiger als ein AIO Gateway, ein Logitech Hub kann auch Geräte per Bluetooth steuern ein AIO Gateway nur IR, Fibaro wird vom Homecenter aktueller unterstützt als von einem AIO Gateway, eine Hue Brige kann Homekit ein AIO Gateway nicht. Es gibt Systeme die unterstützt Mediola überhaupt nicht selber über eigene Gateways und spezielle NEO Plugins wie LCN, 1-Wire, Ebus, Modbus, Wago , Siemens sowie weitere SPS, da bleibt nur die Möglichkeit dieses über ein "Fremd" System in Mediola einzubinden, steuern und visualisieren zu können.
Wenn also bestimmte Fragestellungen auftauchen, die sich zur Zeit nur über ein "Fremd" System bzw. spezielles NEO Plugin in Kombination mit einem passenden Gateway lösen lassen um dies in Mediola zu steuern bzw. zu visualisieren, da ist das halt so. Die einzigen die daran was ändern können ist Mediola selber, indem das Universalgateway den gleichen Funktionsumfang bietet wie die einzelnen Gateways der spezifischen Hersteller selber.
Wenn sich ein Problem nur mit Mediola eigenen Gateways oder NEO Plugins, die für die AIO Gteways konzipiert wurden, lösen lässt wird auch immer darauf verwiesen. Wenn ein Problem zur Zeit nicht selber mit dem AIO Gateway lösen lässt bleibt nur die Möglichkeit das das eben als Featurerequest von Mediola aufgenommen wird und man dann als Kunde warten kann ob das jemals eingebaut wird und wenn ja wann. Da hat man aber als Kunde keinen Einfluss darauf wann das passiert. Alternative ist es halt nicht darauf zu warten das ein Featurerequest eingebaut wird, sondern etwas über bestehende NEO Plugins mit einem externen Gateway zu lösen.
P.S. IP-Symcon besitzt auch eigene Gateways, wenn man diese denn nutzten will. Alle 5 Gateways lassen sich in das Mediola System einbinden, und darüber Geräte in NEO steuern und visualisieren.
Von
@pookylg Wenn ich Dich richtig verstehe wäre es Dir also im Einzelfall lieber darauf zu verweisen das bestimmte Dinge nicht mit Mediola alleine so zu realisieren sind und dann auf andere Foren zu verweisen wenn man das im Detail gelöst haben will. In der Vergangenheit und seit dem bestehen der Mediola Software wurden im Vorgängerforum oder auch hier in der Mediola Answerbase auch immer auf Lösungen verwiesen die weitere Systeme einbeziehen wie CCU Skripte und CCU Programme CuxD, Lösungen über einen externen Webserver, oder eben Lösungen über spezielle von Mediola angebotene NEO Plugins. Es werden ja durchaus schon viele Fragen auch nur noch im Homematic Forum gestellt, wenn man aber hier dazu übergeht sich im Einzelfall nur noch darauf zu beschränken zu sagen das dies momentan nicht ohne zusätzliche Gateways funktioniert und man dann doch im betreffenden Forum nachlesen oder nachfragen soll, dann wird aus meiner persönlichen Sicht die Mediola Answerbase irgendwann ad adsurdum geführt, weil Du hier dann zu manchen Fragen eben auch keine Antwort mehr beim Suchen erhälst.
Mediola wird sich grundsätzlich schon was dabei gedacht haben Plugins wie NEO Plugin Fibaro, NEO Plugin Homepilot, NEO Plugin IP-Symcon usw. anzubieten und damit Geld zu verdienen oder auch seit kurzen extra noch ein unsupported NEO Plugin ioBroker erstellt zu haben. Dies genau aus dem Grund weil es immer Anwendungsfälle geben wird, die sich ohne externe Systeme zur Zeit nicht sauber mit NEO alleine lösen lassen. Ich persönlich finde eine Frage, die in Zusammenhang mit der Nutzung von NEO bzw. Mediola steht und eventuell ein weiteres System einzubeziehen ist, wie CCU Skripte oder Programme, oder ein spezielles NEO Plugin zumindest hier besser aufgehoben und zumindest kurz angerissen beantwortet, als alles auf andere Foren zu verlegen. Schließlich haben die Nutzer, die hier Antwort auf Fragen suchen alles eines gemeinsam, sie nutzten eine Software von Mediola zur Visualisierung. Details zu einem Thema sind wohl immer besser in einem Forum aufgehoben was sich mit dem entsprechenden Gateway beschäftigt.
Mediola bzw. NEO ist oft eine Ergänzung zu einem externen System und mann muss das ja nicht einsetzten. Das muss weder jemand der eine CCU benutzt, da gibt es auch reichlich Visualisierungsalternativen, noch jemand mit einem Homepilot, Fibaro Homecenter, Homewizard, digitalstrom, IP-Symcon, ioBroker usw.
Die meisten der externen Systeme haben eine eigene Steuerungsoberfläche zur Verfügung. Wenn Mediola also attraktiv sein soll, dies als Visualisierungslösung für externe Systeme zu nutzten, dann muss NEO gegenüber der nativen Bedienungsoberflächen eben einen Vorteil besitzten und es sollte auch bei Mediola über die Möglichkeiten, die sich mit so einer Visualisierung bieten gesprochen werden können.
Von
Na ja um auf das eigentliche Thema zurückzukommen. Wenn er eine 400 als Response bekommt dann heisst das Bad Request.
Da er ja die Zeiten nicht einfach aus dem NEO Automation Manager ausliest oder selber per Script berechnet ist er in dem Fall abhängig davon das die Webseite, die er anfragt, auch funktioniert bzw. die Anfrage, die er an die Webseite stellt, richtig ist.
Wenn das Skript also so wieder laufen soll, muss geprüft werden warum Bad Request als Antwort kommt und man muss die Anfrage an die Webseite so abändern das es eben wieder funktioniert.
Das beste wäre die Daten direkt aus dem Automation Manager auszulesen, schießlich sollte dieser die Zeit kennen wegen dem Astro Block. Dazu gibt es aber keinerlei Dokumentation von Mediola wie man den Datenpunkt direkt ausliest, aber vielleicht kann ja da einer Licht ins Dunkel bringen, von den Usern die intensiv Javascript und den NEO Automation Manager nutzten.
Von
Im Übrigen gibt die Adresse
https://sunrise-sunset.org/api
unverändert JSON als Antwort zurück, also kann man das nutzten wenn man will.
Neuen Kommentar hinzufügen