Device-LaCrosse-WS23xx
view release on metacpan or search on metacpan
memory_map_2300.PL view on Meta::CPAN
The WS-23xx devices return data in the following units:
=over 8
=item B<C>
Degrees Centigrade (temperature)
=item B<%>
Percent (humidity)
=item B<hPa>
hectoPascals (pressure)
=item B<m/s>
Meters per Second (wind speed)
=item B<mm>
Millimeters (rainfall)
=item B<degrees>
Compass degrees, 0-359, (wind direction)
=item B<minutes>
Minutes.
=item B<seconds>
Seconds.
=item B<time_t>
Seconds since the Epoch; you probably want to use it as
an argument to B<localtime>().
=back
=head1 AUTHOR
Ed Santiago <esm@cpan.org>
=head1 SEE ALSO
L<Device::LaCrosse::WS23xx>
=cut
1;
END_MMAP_FINAL
close $mmap_fh
or die "$0: Error writing $mmap: $!\n";
chmod 0444 => $mmap;
rename $tmpfile => $mmap
or die "$0: could not rename $tmpfile: $!\n";
exit 0;
__DATA__
################
#
# canonical_name
#
sub _canonical_name {
my $desc = shift;
my $canonical_name = '';
$desc =~ s/_/ /g;
# Min or Max?
if ($desc =~ s/\bmin(imum)?\b/ /i) {
$canonical_name .= 'Min_';
}
elsif ($desc =~ s/\bmax(imum)?\b/ /i) {
$canonical_name .= 'Max_';
}
elsif ($desc =~ s/\b(High|Low)\s*Alarm\b/ /i) {
$canonical_name .= ucfirst(lc($1)) . '_Alarm_';
}
elsif ($desc =~ s/\bCurrent\b/ /i) {
# do nothing
}
# Where?
if ($desc =~ s/\b(in|out)(doors?)?(\b|$)/ /i) {
$canonical_name .= ucfirst(lc($1) . 'door') . '_';
}
# What: Temperature, Windchill, Pressure, ...
if ($desc =~ s/\btemp(erature)?\b/ /i) {
$canonical_name .= 'Temperature';
}
elsif ($desc =~ s/\bPress(ure)?\b/ /i) {
$desc =~ s/\bair\b/ /i;
if ($desc =~ s/\bAbs(olute)?\b/ /i) {
$canonical_name .= 'Absolute_';
}
elsif ($desc =~ s/\bRel(ative)?\b/ /i) {
$canonical_name .= 'Relative_';
}
$canonical_name .= 'Pressure';
if ($desc =~ s/\bCorrection\b/ /i) {
$canonical_name .= '_Correction';
}
}
elsif ($desc =~ s/\b(Humidity|Windchill|Dewpoint)\b/ /i) {
$canonical_name .= ucfirst(lc($1));
$desc =~ s/\bRel(ative)?\b/ /i;
}
elsif ($desc =~ s/\b(Rain)\b//i) {
( run in 0.689 second using v1.01-cache-2.11-cpan-140bd7fdf52 )