(ERGAENZUNG): Und da bin ich, 40 posts später, immer noch nicht wirklich weiter gekommen.
[ol]
[li]Gegen FS20 habe ich die obigen Vorbehalte.
[/li][li]Die Oregon-Station scheint eher als Spielzeug ausgerichtet zu sein (Batterien, kleine Reichweite).
[/li][li]Die Davis-Stationen scheinen mir robust und geeignet
[/li][/ol]
Also, es geht in Richtung Davis. Aber es bleiben folgende (präzise formulierte Fragen:
[ol]
[li]Wie zuverlässig sind sie wirklcih? Hat jemand hier 1st-hand Erfahrungen?
[/li][li]wie soll ich sie ins IPS einbinden? Eine UDP-Sockel kann ich zerlegen - aber für mehr reichen meine Kenntnisse nicht aus.
[/li][/ol]
villeicht mag der Tipp diffus erscheinen, aber mach Dich mal im Wetterstationsforum schlau.
Und nochmal der Tipp: falls eine direkte Anbindung zunächst nicht gelingt geht es auch über WSWIN.
Was ist an der Feststellung eines Durcheinanders verkehrt ? Ich habe es nicht verursacht, weder durch die Fragen noch die Antworten!
Ansonsten wurden danach (von anderen und auch von mir) mehrere unterschiedliche Wege aufgezeigt, die zum selben Ziel führen. Die Entscheidung, welcher Dir am Besten gefällt kann Dir niemand abnehmen.
passt zwar nicht zum Thema, aber wo ist hier der Zusammenhang mit dem Wetter im Wort „Präzipitationen“
Unter Präzipitation versteht man eine immunologische Reaktion bei der es durch die Bildung von Antigen-Antikörper-Komplexen zu einer Ausfällung aus einer Lösung kommt. So kann mit Hilfe bekannter Antikörper ein Antigen nachgewiesen werden und andersherum.
Jetzt hast du mich erwischt! Deutsch ist nicht meine Muttersprache (auch nicht Züritüütsch). English geht bei mir besser. Ich meinte „precipitations“, d.h. Niederschläge.
Dass ich vor 25 Jahren eine immunologische Doktorarbeit (und vor 15 Jahren eine immunologische Habilitation) geschrieben habe, mag die zweideutige Wortwahl zT auch erklären…
ich glaube nicht, dass dies bei uns anwendbar ist. Wir sind im Berner Oberland, und da machen die Berge jedem Wetterbericht einen Strich durch die Rechnung (nicht mal die Sturmwarnung auf dem See- und diese wird irgendwo aus dem Kt. Zürich - kein Witz - gesteuert). Aber wenn du willst, kann ich’s ja mal ausprobieren.
Jetzt ist alles angekommen, und ich mache mich an die Arbeit. Ueber TTY kann ich problemlos mit der Konsole kommunizieren. Als nächstes werde ich eine serielle Instanz in IPS einrichten, und schauen, ob ich die Wetterstation alle 5 Minuten abfragen kann. Bericht folgt…
ich habe hier folgende Klassegefunden, mit der die Datenpakete der Davis-Station zerlegt werden können.
Ich brauche allerdings ein bisschen Hilfe, diese in PhP umzusetzen. Kann mir jemand ein Paar Tipps geben? Herzlichen Dank im Voraus!
// The WeatherLoopData class extracts and stores the weather data from the
// array of bytes returned from the Vantage weather station
// The array is generated from the return of the LOOP command.
//
public class WeatherLoopData
{
// Load - disassembles the byte array passed in and loads it into
// local data that the accessors can use.
// Actual data is in the format to the right of the assignments -
// I convert it to make it easier to use
// When bytes have to be assembled into 2-byte, 16-bit numbers,
// I convert two bytes from the array into
// an Int16 (16-bit integer). When a single byte is all that's needed,
// I just convert it to an Int32.
// In the end, all integers are cast to Int32 for return.
public void Load(Byte[] loopByteArray)
{
int hours,
minutes;
string timeString;
DateTime currTime;
// Sbyte - signed byte
barTrend = Convert.ToInt32((sbyte)loopByteArray[3]);
// Uint16
barometer = (float)(BitConverter.ToInt16(loopByteArray, 7)) / 1000;
// Uint16
insideTemp = (float)(BitConverter.ToInt16(loopByteArray, 9)) / 10;
// Byte - unsigned byte
insideHumidity = Convert.ToInt32(loopByteArray[11]);
// Uint16
outsideTemp = (float)(BitConverter.ToInt16(loopByteArray, 12)) / 10;
// Byte - unsigned byte
outsideHumidity = Convert.ToInt32(loopByteArray[33]);
// Uint16
windDirection = BitConverter.ToInt16(loopByteArray, 16);
// Byte - unsigned byte
currWindSpeed = Convert.ToInt32(loopByteArray[14]);
// Byte - unsigned byte
avgWindSpeed = Convert.ToInt32(loopByteArray[15]);
// Uint16
dayRain = (float)(BitConverter.ToInt16(loopByteArray, 50)) / 100;
// get the current date and time
currTime = DateTime.Now;
// Time from the Vantage is all in 24-hour format.
// I move it into a string so I can manipulate it
// more easily.
timeString = BitConverter.ToInt16(loopByteArray, 91).ToString(); // Uint16
// Extract hours and minutes and convert them to integers - required by Datetime
hours = Convert.ToInt32(timeString.Substring(0, timeString.Length - 2));
minutes = Convert.ToInt32(timeString.Substring(timeString.Length - 2, 2));
// Create a new Datetime instance - use current year, month and day
sunRise = new DateTime(currTime.Year, currTime.Month,
currTime.Day, hours, minutes, 0);
timeString = BitConverter.ToInt16(loopByteArray, 93).ToString(); // Uint16
hours = Convert.ToInt32(timeString.Substring(0, timeString.Length - 2));
minutes = Convert.ToInt32(timeString.Substring(timeString.Length - 2, 2));
sunSet = new DateTime(currTime.Year, currTime.Month,
currTime.Day, hours, minutes, 0); ;
}
}