NEWS
WEATHERMAN von Dr. Stall
-
Das ist eigentlich meine Frage. Werden nur Daten übermittelt oder übernimmt die WeMos die Auswertung inklusive Sonnenstandsskript? `
Auch hier kann ich nur auf den WiFFi verweisen. Der berechnet "aus lauter Langeweile" auch den Sonnenstand. Wenn noch Platz im Sketch war denke ich mal, dass Eugen das hier auch implementiert hat.
Gruß
Rainer
-
Dankeschön für den Link. Aber in der Anleitung steht:
****Berechnung Sonnenstand Azimut
Berechnung Sonnenstand Elevation****
Gibst bestimmt ein Grund oder?
Was muss ich im ioBroker noch machen damit ich die Befehle über dem S7 Adapter zu meine LOGO sende?
drei Fassaden
Schöne Grüße
2071_s7-ni.jpg -
Verzeihung bitte aber ich hab noch nie eine HM gehabt/programmiert und kenne die Struktur/Befehle nicht.
-
Dankeschön für den Link. Aber in der Anleitung steht:
Berechnung Sonnenstand Azimut
Berechnung Sonnenstand Elevation
Stimmt, das wird geliefert.
> w_elevation vom Typ Zahl mit Maßeinheit °w_azimut vom Typ Zahl mit Maßeinheit ° `
Für die Beschhattung muss dann der Azimut in Relation zur Fassenausrichtung (Ausrichtung - 90° < Azimut < Ausrichtung + 90°) und die Elevation (> X °) ausgewertet werden. -
ich hab noch nie eine HM gehabt/programmiert und kenne die Struktur/Befehle nicht. `
Die Programmierung in ioBroker erfolgt in Javascript und hat nichts mit der Programmierung in der HM zu tun. -
übernimmt die WeMos die Auswertung inklusive Sonnenstandsskript? `
Das Sonnenstandsskript für ioBroker findest Du http://www.iobroker.net/docu/?page_id=3693&lang=de oder mit den Daten aus dem js-controller:var suncalc = require('suncalc'), result = getObject('system.config.common'), lat = result.latitude, long = result.longitude; createState('Sonnenstand.Elevation', 0, { type: 'number', unit: '°' }); createState('Sonnenstand.Azimut', 0, { type: 'number', unit: '°' }); function Sonnenstand_berechnen () { var sunpos = suncalc.getPosition(new Date(), lat, long); var h = sunpos.altitude * 180 / Math.PI, a = sunpos.azimuth * 180 / Math.PI + 180; setState('Sonnenstand.Elevation', 0.1 * Math.round(10 * h), true); setState('Sonnenstand.Azimut', Math.round(a), true); } schedule("* * * * *", Sonnenstand_berechnen); // jede Minute Sonnenstand_berechnen(); // bei Scriptstart
Die Auswertung musst Du schon selbst anhand der Fassadenausrichtung machen. `
Mal eine Frage. Ich habe das Sonnenstandsscript von Eugen auf der CCU2 laufen und bin sehr zufrieden. In Kombination mit dem von ihm entworfenen Sonnensensor rollen meine Rolladen seit drei Jahren perfekt!
Entspricht dein Script dem CCU Script oder gibt es da grundsätzliche Unterschiede?
Danke und Grüße
Andreas
-
Entspricht dein Script dem CCU Script oder gibt es da grundsätzliche Unterschiede? `
Der wesentliche Unterschied ist die verwendete Programmiersprache und daraus resultierend der Aufwand und die Genauigkeit.Da HM-Script keine transzendenten mathematischen Funktionen kennt, muss man in HM-Script interpolieren, wobei ein Kompromiss zwischen Aufwand und Genauigkeit gefunden werden muss. Das Problem hat man in Javascript nicht
-
Das Sonnenstandsskript für ioBroker findest Du http://www.iobroker.net/docu/?page_id=3693&lang=de oder mit den Daten aus dem js-controller: `
Bekomme diese Warnungjavascript.0 2017-09-02 19:26:37.821 info script.js.common.Sonnenstand: registered 0 subscriptions and 1 schedule javascript.0 2017-09-02 19:26:37.820 warn script.js.common.Sonnenstand: sunpos: [object Object] javascript.0 2017-09-02 19:26:37.818 warn script.js.common.Sonnenstand: longitude: x.xxxx javascript.0 2017-09-02 19:26:37.818 warn script.js.common.Sonnenstand: latitude : yy.yyyy javascript.0 2017-09-02 19:26:37.817 info script.js.common.Sonnenstand: -----------------------------------------------
-
Bekomme diese Warnung `
Sorry, mein Fehler. Sollte doch alle Skripte testen. Habe es im Original geändert:var suncalc = require('suncalc'), result = getObject('system.config'), lat = result.common.latitude, long = result.common.longitude;
-
jetzt
javascript.0 2017-09-02 20:17:00.971 warn script.js.common.Sonnenstand: sunpos: [object Object] javascript.0 2017-09-02 20:17:00.970 warn script.js.common.Sonnenstand: longitude: undefined javascript.0 2017-09-02 20:17:00.970 warn script.js.common.Sonnenstand: latitude : undefined javascript.0 2017-09-02 20:17:00.968 info script.js.common.Sonnenstand: -----------------------------------------------
spielt das eine Rolle wie viele Ziffern nach dem Punkt?
Hab dem Script unter common oder muss er unter global? Wo ist der Unterschied?
-
Läuft, die warnung kamm von dem http://www.iobroker.net/docu/?page_id=3693&lang=de
Jetzt muss ich noch herausfinden wie man dem nutzt
-
Die Koordinaten werden in den Systemeinstellungen (Button ganz oben rechts) eingetragen.
-
Hab dem Script unter common oder muss er unter global? Wo ist der Unterschied? `
Auf keinen Fall unter global :!: Unter global verwendet man nur Skripte mit Funktionen, die häufig benötigt werden. Skripte unter global werden nicht gestartet, sondern in alle anderen Skripte eingefügt ! Beispiel für ein Skript, das ich unter global erstellt habe, weil ich es häufig nutze:function runden(wert, stellen) { return Math.round(wert * Math.pow(10, stellen)) / Math.pow(10, stellen); }
-
Es gibt ein Skript für Eugens WiFFi um die Daten abzurufen.
Wie ich Eugen kenne müsste das mit dem Weatherman genauso funktionieren.
Gruß
Rainer `
Rainer, kannst Du mir sagen, wo ich das Skript finde? Die SuFu hat nichts ausgespuckt.
Ich habe den Weatherman und möchte nun die Daten in iobroker anzeigen lassen ohne die CCU einzubinden. Leider habe ich von json und co (noch ) keinen Plan.
Wie komme ich also an die Daten?
Grüße Andreas
-
Rainer, kannst Du mir sagen, wo ich das Skript finde? Die SuFu hat nichts ausgespuckt. `
Klar doch:
http://forum.iobroker.net/viewtopic.php … ilit=wiffi
Allerdings ist das für den Wiffi.
Ich weiß nicht ob das auch für den Weatherman gilt.
Müsstest du probieren
Viel Erfolg
Rainer
-
Danke, ich probiere und berichte.
Grüße Andreas
-
http://forum.iobroker.net/viewtopic.php?p=82797#p82797[
@Vumer:http://forum.iobroker.net/viewtopic.php?p=82797#p82797 ` ](http://forum.iobroker.net/viewtopic.php?p=82797#p82797)
nach vielen Versuchen habe ich es hinbekommen. Das Problem war wenn ich
setState('Sonnenstand.Elevation', Math.round(10 * h) / 10, true);
in
setState('s7.0.DBs.DB1.ANI1', Math.round(10 * h) / 10, true);
endern, kann ich die Werte im S7 Adapter sehen aber die werden nich zu LOGO übertragen. Die Lösung ist:
var suncalc = require('suncalc'), result = getObject('system.config'), lat = result.common.latitude, long = result.common.longitude; /**createState('Sonnenstand.Elevation', 0, { type: 'number', unit: '°' }); createState('Sonnenstand.Azimut', 0, { type: 'number', unit: '°' }); */ function Sonnenstand_berechnen () { var sunpos = suncalc.getPosition(new Date(), lat, long); var h = sunpos.altitude * 180 / Math.PI, a = sunpos.azimuth * 180 / Math.PI + 180; //setState('Sonnenstand.Elevation', Math.round(10 * h) / 10, true); //setState('Sonnenstand.Azimut', Math.round(a), true); setState('s7.0.DBs.DB1.ANI1',Math.round(10 * h) / 10); setState('s7.0.DBs.DB1.ANI2', Math.round(a)); } schedule("* * * * *", Sonnenstand_berechnen); // jede Minute Sonnenstand_berechnen(); // bei Scriptstart
ein kleines "Aber" gibt es noch: Elevation mit 10.8° wirt mit dem Wert 10 übertragen und schaltet erst bei 11.0° um.
± 1° ist doch nicht so schlim, oder?
Kann man mit dem Skript auch die Schattenlänge berechnen?
Schöne Grüße
Schöne
-
± 1° ist doch nicht so schlim, oder? `
Je nach Jahreszeit schon.Das müsste man mal für heute ausrechnen, wieviel das in Minuten sind.
Gruß
Rainer
-
Ja, hast recht, das dauert ganz schön lange. Habe es jetzt von
setState('s7.0.DBs.DB1.ANI1',Math.round(10 * h) / 10);
in````
setState('s7.0.DBs.DB1.ANI1',Math.round(10 * h)); -
Ganz grob gerechnet ohne den sinusförmigen Verlauf zu berücksichtigen.
und überall gerundet
Sonnenaufgang 08:30, Höchststand 12:30 = 4h = 240 Minuten (nach Sonnenverlauf.de)
Höchststand = 15,8° (16°)
240 MInuten /16° = 15 MInuten pro Grad.
Im Sommer sieht es sicher besser aus.
Ein Mathematiker oder Astronom kann's sicherlich besser.
Gruß
Rainer