Wetterstation: Davis Vantage in IPS direkt einbinden?

nancilla, ich denke es ist zweckmässioger, das Datenpaket mit PHP-Befehlen zu parsen, weil es sind gut 30 meteorologischen Daten darin enthalten - ich müsste viele Cutters dafür anlegen, oder sehe ich das falsch?

Es wird doch bestimmt ein Start o. Stop-Byte oder beides gesendet und du willst die Daten (Block), die dazwischen liegen. Genau das macht der Cutter, indem du diese immer mitgesendeten Bytes auswertest und nur den wichtigen Teil der Daten an die Registervariable (im Ganzen) übergibst.

besten dank. geschafft! Deine Anleitung mit dem Cutter war entscheidend. Mir sind aber noch ein Paar Dinge unklar:

[ul]
[li]wenn ich eine HEX-Sequenz als Trennung Links im Cutter angebe, wird die links liegen gelassen oder kommt sie rechts mit?
[/li][li]was ist die beste Funktion, um eine HEX-Abfolge in Einzelteile zu zerlegen? Ich habe experimentiert mit intval(substr($DataStringHex,0,2)) ohne grossen erfolg…
[/li][/ul]

Es ist mir bewusst, dass diese Dinge relativ elementar sind, und ich bin für das Händchenhalten sehr dankbar. Im Gegenzug werde ich das Gesamtskript verfügbar machen, so dass andere Davis-Besitzer sich daran bedienen können.

zu 1. - Rechts
zu 2. Wie kommen denn die „Teile“ nun an?

bin fast so weit. gewisse Werte (feuchtigkeit) werden mit einem byte repräsentiert, und die kann ich aus dem Datenpaket isolieren mit z.B. $outsideHumidity =hexdec(strtohex(substr($DataStringHex,33,1)));. In letzterem Falle ist es Byte #33, welches ein dezimales Prozenzwert der Feuchtigkeit wiedergibt. Das funktioniert nun gut - was schon mal prima ist.

Was ich nicht weiss ist, wie ich 2-byte Werte konvertieren soll. Z.B. der Luftdruck wird angegeben mit 2 Bytes an Stelle #7 und #8 des Datenpakets aber der Befehl $barometer = hexdec(strtohex(substr($DataStringHex,7,2))); führt zu komplett absurden Werten. Kann jemand Abhilfe schaffen?

hier ist der gegenwärtige Zustand des Skripts, zur Veranschaulichung (mir wird sonst immer vorgeworfen, ich sei unspezifisch). Ich würde aber niemandem raten, diesen „work in progress“ in sein IPS einzubinden. Die Aussentemperatur liegt laut Skript derzeit bei 3567 °F Grad Fahrenheit…

<?php

 $crlf = chr(0x0D).chr(0x0A);
 $cr = chr(0x0D);
 $lf = chr(0x0A);

// 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.
//
// Contents of the character array (LOOP packet from Vantage):
//
//    Field                           Offset  Size    Explanation
//    "L"                             0       1
//    "O"                             1       1
//    "O"                             2       1       Spells out "LOO" for Rev B packets and "LOOP" for Rev A packets. Identifies a LOOP packet
//    "P" (Rev A), Bar Trend (Rev B)  3       1       Signed byte that indicates the current 3-hour barometer trend. It is one of these values:
//                                                    -60 = Falling Rapidly  = 196 (as an unsigned byte)
//                                                    -20 = Falling Slowly   = 236 (as an unsigned byte)
//                                                    0 = Steady
//                                                    20 = Rising Slowly
//                                                    60 = Rising Rapidly
//                                                    80 = ASCII "P" = Rev A firmware, no trend info is available.
//                                                    Any other value means that the Vantage does not have the 3 hours of bar data needed
//                                                        to determine the bar trend.
//    Packet Type                     4       1       Has the value zero. In the future we may define new LOOP packet formats and assign a different
//                                                        value to this field.
//    Next Record                     5       2       Location in the archive memory where the next data packet will be written. This can be
//                                                        monitored to detect when a new record is created.
//    Barometer                       7       2       Current Barometer. Units are (in Hg / 1000). The barometric value should be between 20 inches
//                                                        and 32.5 inches in Vantage Pro and between 20 inches and 32.5 inches in both Vantatge Pro
//                                                        Vantage Pro2.  Values outside these ranges will not be logged.
//    Inside Temperature              9       2       The value is sent as 10th of a degree in F.  For example, 795 is returned for 79.5�F.
//    Inside Humidity                 11      1       This is the relative humidity in %, such as 50 is returned for 50%.
//    Outside Temperature             12      2       The value is sent as 10th of a degree in F.  For example, 795 is returned for 79.5�F.
//    Wind Speed                      14      1       It is a byte unsigned value in mph.  If the wind speed is dashed because it lost synchronization
//                                                        with the radio or due to some other reason, the wind speed is forced to be 0.
//    10 Min Avg Wind Speed           15      1       It is a byte unsigned value in mph.
//    Wind Direction                  16      2       It is a two byte unsigned value from 0 to 360 degrees.
//                                                        (0� is North, 90� is East, 180� is South and 270� is West.)
//    Extra Temperatures              18      7       This field supports seven extra temperature stations. Each byte is one extra temperature value
//                                                        in whole degrees F with an offset of 90 degrees.  For example, a value of 0 = -90�F ;
//                                                        a value of 100 = 10�F ; and a value of 169 = 79�F.
//    Soil Temperatures               25      4       This field supports four soil temperature sensors, in the same format as the Extra Temperature
//                                                        field above
//    Leaf Temperatures               29      4       This field supports four leaf temperature sensors, in the same format as the Extra Temperature
//                                                        field above
//    Outside Humidity                33      1       This is the relative humitiy in %.
//    Extra Humidities                34      7       Relative humidity in % for extra seven humidity stations.
//    Rain Rate                       41      2       This value is sent as 100th of a inch per hour.  For example, 256 represent 2.56 inches/hour.
//    UV                              43      1       The unit is in UV index.
//    Solar Radiation                 44      2       The unit is in watt/meter2.
//    Storm Rain                      46      2       The storm is stored as 100th of an inch.
//    Start Date of current Storm     48      2       Bit 15 to bit 12 is the month, bit 11 to bit 7 is the day and bit 6 to bit 0 is the year offseted
//                                                        by 2000.
//    Day Rain                        50      2       This value is sent as the 100th of an inch.
//    Month Rain                      52      2       This value is sent as the 100th of an inch.
//    Year Rain                       54      2       This value is sent as the 100th of an inch.
//    Day ET                          56      2       This value is sent as the 100th of an inch.
//    Month ET                        58      2       This value is sent as the 100th of an inch.
//    Year ET                         60      2       This value is sent as the 100th of an inch.
//    Soil Moistures                  62      4       The unit is in centibar.  It supports four soil sensors.
//    Leaf Wetnesses                  66      4       This is a scale number from 0 to 15 with 0 meaning very dry and 15 meaning very wet.  It supports
//                                                        four leaf sensors.
//    Inside Alarms                   70      1       Currently active inside alarms. See the table below
//    Rain Alarms                     71      1       Currently active rain alarms. See the table below
//    Outside Alarms                  72      2       Currently active outside alarms. See the table below
//    Extra Temp/Hum Alarms           74      8       Currently active extra temp/hum alarms. See the table below
//    Soil & Leaf Alarms              82      4       Currently active soil/leaf alarms. See the table below
//    Transmitter Battery Status      86      1
//    Console Battery Voltage         87      2       Voltage = ((Data * 300)/512)/100.0
//    Forecast Icons                  89      1
//    Forecast Rule number            90      1
//    Time of Sunrise                 91      2       The time is stored as hour * 100 + min.
//    Time of Sunset                  93      2       The time is stored as hour * 100 + min.
//    "
" <LF> = 0x0A                95      1
//    "\r" <CR> = 0x0D                96      1
//    CRC                             97      2
//    Total Length                    99



if ($IPS_SENDER == "RegisterVariable") // wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
{

// 	 $data  = RegVar_GetBuffer($IPS_INSTANCE); // bereits im Puffer der RegisterVariable-Instanz vorhandene Daten in $data kopieren
    $data = $IPS_VALUE; // neu empfangene Daten an $data anhängen

// http://www.koders.com/csharp/fid1BE60D81A18EF41535447F73BD3DE3BF846B5104.aspx?s=button

$DataStringHex = "L".$data;

$val = preg_replace('/[^
	\x20-\x7E\xA0-\xFF]/', ' ', $DataStringHex);
print "Skript aufgerufen : ". $DataStringHex;


   $loo = substr($DataStringHex,0,3);
	$barTrend =  hexdec(strtohex(substr($DataStringHex,3,1)));
	$barometer = hexdec(strtohex(substr($DataStringHex,7,2)));
	$insideTemp =hexdec(strtohex(substr($DataStringHex,9,2)));
	$insideHumidity =hexdec(strtohex(substr($DataStringHex,11,1)));
	$outsideTemp =hexdec(strtohex(substr($DataStringHex,12,2)));
	$outsideHumidity =hexdec(strtohex(substr($DataStringHex,33,1)));
	$windDirection = hexdec(strtohex(substr($DataStringHex,16,2)));
   $currWindSpeed = hexdec(strtohex(substr($DataStringHex,14,1)));
   $avgWindSpeed = hexdec(strtohex(substr($DataStringHex,15,1)));
   $dayRain = hexdec(strtohex(substr($DataStringHex,50,2)));
   $rainrate = hexdec(strtohex(substr($DataStringHex,41,2)));
   $UV =hexdec(strtohex(substr($DataStringHex,43,1)));
   $SolarRadiation = hexdec(strtohex(substr($DataStringHex,44,2)));
   $StormRain = hexdec(strtohex(substr($DataStringHex,46,2)));
   $ConsoleBatteryVoltage = hexdec(strtohex(substr($DataStringHex,87,2)));
   $TransmitterBatteryStatus = hexdec(strtohex(substr($DataStringHex,86,1)));
   $CRC = substr($DataStringHex,97,2);

/*
	$loo = hextostr(substr($DataStringHex,1,3));
	$barTrend =  hextostr(substr($DataStringHex,3,1));
	$barometer = hextostr(substr($DataStringHex,7,2));
	$insideTemp =hextostr(substr($DataStringHex,9,2));
	$insideHumidity =hextostr(substr($DataStringHex,11,1));
	$outsideTemp =hextostr(substr($DataStringHex,12,2));
	$outsideHumidity =hextostr(substr($DataStringHex,33,1));
	$windDirection = hextostr(substr($DataStringHex,16,2));
   $currWindSpeed = hextostr(substr($DataStringHex,14,1));
   $avgWindSpeed = hextostr(substr($DataStringHex,15,1));
   $dayRain = hextostr(substr($DataStringHex,50,2));
   $rainrate = hextostr(substr($DataStringHex,41,2));
   $UV =hextostr(substr($DataStringHex,43,1));
   $SolarRadiation = hextostr(substr($DataStringHex,44,2));
   $StormRain = hextostr(substr($DataStringHex,46,2));
   $ConsoleBatteryVoltage = hextostr(substr($DataStringHex,87,2));
   $TransmitterBatteryStatus = hextostr(substr($DataStringHex,86,1));
   $CRC = hextostr(substr($DataStringHex,97,2));

*/

echo chr(13)."LOO :" . $loo .chr(13);
echo "barTrend :" . $barTrend .chr(13);
echo "barometer :" . $barometer .chr(13);
echo "insideTemp :" . $insideTemp .chr(13);
echo "insideHumidity :" . $insideHumidity .chr(13);
echo "outsideTemp :" . $outsideTemp .chr(13);
echo "outsideHumidity :" . $outsideHumidity .chr(13);
echo "windDirection :" . $windDirection .chr(13);
echo "currWindSpeed :" . $currWindSpeed .chr(13);
echo "avgWindSpeed :" . $avgWindSpeed .chr(13);
echo "dayRain :" . $dayRain .chr(13);
echo "rainrate :" . $rainrate .chr(13);
echo "UV :" . $UV .chr(13);
echo "SolarRadiation :" . $SolarRadiation .chr(13);
echo "StormRain :" . $StormRain .chr(13);
echo "ConsoleBatteryVoltage :" . $ConsoleBatteryVoltage .chr(13);
echo "TransmitterBatteryStatus :" . $TransmitterBatteryStatus.chr(13);
echo "CRC :" . $CRC .chr(13);
print " skript end";
}

   
function hextostr($x) {
  $s='';
  foreach(explode("
",trim(chunk_split($x,2))) as $h) $s.=chr(hexdec($h));
  return($s);
}

function strtohex($x) {
  $s='';
  foreach(str_split($x) as $c) $s.=sprintf("%02X",ord($c));
  return($s);
}


function hexdecs($hex)
{
    // ignore non hex characters
    $hex = preg_replace('/[^0-9A-Fa-f]/', '', $hex);

    // converted decimal value:
    $dec = hexdec($hex);

    // maximum decimal value based on length of hex + 1:
    //   number of bits in hex number is 8 bits for each 2 hex -> max = 2^n
    //   use 'pow(2,n)' since '1 << n' is only for integers and therefore limited to integer size.
    $max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2)));

    // complement = maximum - converted hex:
    $_dec = $max - $dec;

    // if dec value is larger than its complement we have a negative value (first bit is set)
    return $dec > $_dec ? -$_dec : $dec;
}


?>

Ich versteh deine Umrechnerrei nicht. Die Daten kommen doch als Hex an oder nicht.

Kannst Du mal einen Dump von Comport, Cutter und Registervariable anhängen.

danke, Rainer. Ich bin sicher, dass ich etwas Dummes mache - aber ich weiss nicht was!

Here we go. Ich habe die ersten 2 bytes der Registervariable mit „LO“ programmatisch gepatcht, damit die Länge mit den Spezifikationen von Davis (s.o.) nach der Cutter-Intervention wieder stimmt:

Dump COMPORT
30.12.2011 07:17:11.00 | TRANSMITTED | 0A
30.12.2011 07:17:11.00 | TRANSMITTED | 0A
30.12.2011 07:17:11.00 | RECEIVED | 0A
30.12.2011 07:17:11.00 | RECEIVED | 0D
30.12.2011 07:17:12.00 | TRANSMITTED | 4C 4F 4F 50 20 31 0A
30.12.2011 07:17:12.00 | RECEIVED | 06 4C
30.12.2011 07:17:12.00 | RECEIVED | 4F 4F
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 6C 00
30.12.2011 07:17:12.00 | RECEIVED | 26 6F
30.12.2011 07:17:12.00 | RECEIVED | 67 03
30.12.2011 07:17:12.00 | RECEIVED | 19
30.12.2011 07:17:12.00 | RECEIVED | 79 03 00 00
30.12.2011 07:17:12.00 | RECEIVED | FF 7F
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | 17 FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF
30.12.2011 07:17:12.00 | RECEIVED | FF 00
30.12.2011 07:17:12.00 | RECEIVED | 00 FF
30.12.2011 07:17:12.00 | RECEIVED | FF 7F 00 00
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF FF
30.12.2011 07:17:12.00 | RECEIVED | FF
30.12.2011 07:17:12.00 | RECEIVED | FF 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00
30.12.2011 07:17:12.00 | RECEIVED | 00
30.12.2011 07:17:12.00 | RECEIVED | 00 00 00 00
30.12.2011 07:17:12.00 | RECEIVED | 64 00
30.12.2011 07:17:12.00 | RECEIVED | 06 BE
30.12.2011 07:17:12.00 | RECEIVED | D4 02 A7 06
30.12.2011 07:17:12.00 | RECEIVED | 0A
30.12.2011 07:17:12.00 | RECEIVED | 0D 07
30.12.2011 07:17:12.00 | RECEIVED | E7

Dump Cutter
30.12.2011 07:17:11.00 | Received Data | 0A
30.12.2011 07:17:11.00 | CURRENTBUFFER | 67 73 0A
30.12.2011 07:17:11.00 | Received Data | 0D
30.12.2011 07:17:11.00 | CURRENTBUFFER | 67 73 0A 0D
30.12.2011 07:17:12.00 | Received Data | 06 4C
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C
30.12.2011 07:17:12.00 | Received Data | 4F 4F
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00
30.12.2011 07:17:12.00 | Received Data | 6C 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00
30.12.2011 07:17:12.00 | Received Data | 26 6F
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F
30.12.2011 07:17:12.00 | Received Data | 67 03
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03
30.12.2011 07:17:12.00 | Received Data | 19
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19
30.12.2011 07:17:12.00 | Received Data | 79 03 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00
30.12.2011 07:17:12.00 | Received Data | FF 7F
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF
30.12.2011 07:17:12.00 | Received Data | FF FF FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF FF FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | 17 FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF
30.12.2011 07:17:12.00 | Received Data | FF FF FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00
30.12.2011 07:17:12.00 | Received Data | 00 FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF
30.12.2011 07:17:12.00 | Received Data | FF 7F 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF
30.12.2011 07:17:12.00 | Received Data | FF 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 00 00 00 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30.12.2011 07:17:12.00 | Received Data | 64 00
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00
30.12.2011 07:17:12.00 | Received Data | 06 BE
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE
30.12.2011 07:17:12.00 | Received Data | D4 02 A7 06
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE D4 02 A7 06
30.12.2011 07:17:12.00 | Received Data | 0A
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE D4 02 A7 06 0A
30.12.2011 07:17:12.00 | Received Data | 0D 07
30.12.2011 07:17:12.00 | CURRENTBUFFER | 67 73 0A 0D 06 4C 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE D4 02 A7 06 0A 0D 07
30.12.2011 07:17:12.00 | SENDCHUNK | 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE D4 02 A7 06
30.12.2011 07:17:12.00 | Received Data | E7
30.12.2011 07:17:12.00 | CURRENTBUFFER | 07 E7

Dump Registervariable
30.12.2011 07:17:12.00 | Received Data | 4F 4F 00 00 6C 00 26 6F 67 03 19 79 03 00 00 FF 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 17 FF FF FF FF FF FF FF 00 00 FF FF 7F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 06 BE D4 02 A7 06

Mit anhängen, meinte ich auch anhängen als Datei. Damit kann man auch arbeiten. :wink:

In solchen Fällen wird das niederwertige Byte meistens zuerst gesendet. Du mußt die Bytes erst drehen und dann zusammenrechenen. Dann kommen auch sinnvolle Werte raus.

Attain

wow!!! Darauf wäre ich NIE IM LEBEN gekommen! Ausprobiert (zunächst für die Temperatur), und siehe da, 86.3 Fahrenheit. Im Serverschrank, wo die Davis erstmals plaziert ist, scheint das ein realistischer Wert zu sein. VIELEN HERZLICHEN DANK!

Bleibt dennoch das Problem mit den „signed bytes“. Bei Offset 3 gibt es folgendes:


//    "P" (Rev A), Bar Trend (Rev B)  3       1       Signed byte that indicates the current 3-hour barometer trend. It is one of these values: 
//                                                    -60 = Falling Rapidly  = 196 (as an unsigned byte) 
//                                                    -20 = Falling Slowly   = 236 (as an unsigned byte)   
//                                                    0 = Steady  
//                                                    20 = Rising Slowly  
//                                                    60 = Rising Rapidly  

Ich kriege nur positive Werte heraus - wäre aber ganz nett, -60 anstelle von +196 zu bekommen. Wie kriege ich das hin?

Werte ersetzen, wäre zu trivial oder?

Da lese ich noch in der Protokollbeschreibung:

There are two different loop data formats. Rev „A“ firmware, dated before April 24, 2002 uses
the old format. Rev „B“ firmware, dated on or after April 24, 2002 uses the new format. The only
difference between these formats is the inclusion of the current 3 hour barometer trend in place
of the fixed value „P“ in the fourth byte of the data packet.

Welche Firmware hast du denn auf dem Gerät?

Ersetzen würde zwar gehen für diese 3 Werte, aber (1) es ist nicht elegant und (2) es hilft nicht Anderen als Referenzlösung, welche ähnliche Probleme haben;

Ausserdem (3) hätte ich eventuell das gleiche Problem bei der Temperatur. die Werte stimmen jetzt zwar. Aber wenn es unter 0°F kalt wird, weiss ich nicht was die Station hergibt.

0°F ist ca. -18°C- Das ist zwar heftig und kommt nicht häufig vor im Eidgenössischen Unterland - aber die Wetterstation soll gerade bei Extremwetter keinen Spuk von sich geben…

Meine Version gibt schon den Dreistunden-Trend aus. Kann man notfalls über PhP auch rekonstruieren, aber warum in die Ferne schweifen wenn die Station das schon liefert…

Wie wär’s wenn du nochmal dein derzeitiges Script dazu „blank“ ziehst? :smiley:

Hallo,

das Vorzeichen ist im Bit 7 des Bytes. Dies wäre eine Möglichkeit es umzusetzen:

$barTrend =  hexdec(strtohex(substr($DataStringHex,3,1)));
$barTrend = $barTrend - 256 * ($barTrend >> 7);

Gruß
Attain

Attain, you da man! Und natürlich klappt es bestens nach Deiner Anleitung. Falls Du einmal einen Kurs „Grundlagen der Informatik für alternde Molekularbiologen“ veranstaltest, werde ich mich sicher einschreiben!

Gefrierschrank / -truhe ?

Gruß
Bruno

Hi @ All,

geht das auch ohne einen Virtuellen Com-Port und wenn nicht mit welchem soll ich das machen ??
Meine Vantage Pro2 läuft mit Datenlogger und USB und wird auf COM3 erkannt. Würde gerne dieses Script einbinden
komme aber Ihrgend wie nicht weiter. :confused:

Grüße Ralf

Hallo Ralf,

schau mal hier.

aag hat bei seiner Beschreibung nur den Cutter vergessen.

Das geht natürlich auch direkt.

Gruß

Frank

Hallo Frank,

das mit dem Cutter habe ich nur das mit dem Virtuellen Port raffe ich nicht und oder wie Funzt das mit direktem ansprechen des ComPort3 an dem die VPro dargestellt wird ob wohl sie per USB am IPS Server angeschlossenn ist.

Habe ziemlich lange Pause gemacht und stehe irgend wie wieder am Anfang :frowning:

Grüße Ralf