From bf3d1a0700483027087137851cfd99e3d2e705ad Mon Sep 17 00:00:00 2001 From: borisneubert <> Date: Thu, 8 Nov 2012 20:56:21 +0000 Subject: [PATCH] introduced readingsBulkUpdate, readingsSingleUpdate introduced GPLv2 git-svn-id: https://svn.fhem.de/fhem/trunk@2099 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 2 + fhem/FHEM/00_ZWDongle.pm | 2 +- fhem/FHEM/02_RSS.pm | 4 +- fhem/FHEM/11_FHT.pm | 35 +++++++++++--- fhem/FHEM/46_TRX_LIGHT.pm | 47 ++++++++++--------- fhem/FHEM/46_TRX_SECURITY.pm | 52 +++++++++++---------- fhem/FHEM/46_TRX_WEATHER.pm | 38 ++++++++------- fhem/FHEM/49_IPCAM.pm | 6 +-- fhem/FHEM/50_WS300.pm | 53 ++++++++++----------- fhem/FHEM/57_Calendar.pm | 64 +++++++++++++++---------- fhem/FHEM/59_HCS.pm | 16 +++---- fhem/FHEM/59_Twilight.pm | 41 +++++++++++----- fhem/FHEM/59_Weather.pm | 85 ++++++++++++++++++++-------------- fhem/FHEM/67_ECMDDevice.pm | 31 +++++++++---- fhem/FHEM/70_TellStick.pm | 2 +- fhem/FHEM/71_YAMAHA_AVR.pm | 61 +++++++++++++++--------- fhem/FHEM/72_FB_CALLMONITOR.pm | 50 +++++++++++++------- fhem/FHEM/98_JsonList.pm | 2 +- fhem/FHEM/98_WOL.pm | 2 +- fhem/FHEM/98_structure.pm | 27 +++++++++-- fhem/FHEM/98_telnet.pm | 2 +- fhem/FHEM/FritzBoxUtils.pm | 2 +- fhem/FHEM/TcpServerUtils.pm | 2 +- fhem/fhem.pl | 17 ++++++- 24 files changed, 399 insertions(+), 244 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index c6e4693d9..919b350ac 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -8,6 +8,8 @@ - feature: autoloading commands, XmlList/etc renamed from 99 to 98. - feature: FHEMWEB returns external files in chunks to save memory - feature: commandref.html splitted: documentation is now appended to the modules. + - change: introduced readingsBulkUpdate, readingsSingleUpdate + - change: added GPLv2 licensing information - 2012-10-28 (5.3) - feature: added functions trim, ltrim, rtrim, UntoggleDirect, UntoggleIndirect diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index 6e2c829c7..27ccdd011 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -1,5 +1,5 @@ ############################################## -# $Id: 00_ZWDongle.pm 1721 2012-07-11 14:48:24Z rudolfkoenig $ +# $Id$ # TODO: # - routing commands # - one command to create a fhem device for all nodeList entries diff --git a/fhem/FHEM/02_RSS.pm b/fhem/FHEM/02_RSS.pm index 32ad6cc09..eb1257bd9 100644 --- a/fhem/FHEM/02_RSS.pm +++ b/fhem/FHEM/02_RSS.pm @@ -5,7 +5,7 @@ # e-mail: omega at online dot de # ############################################## -# $Id $ +# $Id$ package main; use strict; @@ -619,7 +619,7 @@ RSS_CGI(){ is loaded from the URL <arg>. You can use <code>{ <a href="#perl"><perl special></a> }</code> for <arg>. See below for example. Notice: do not load the image from URL that is served by fhem as it leads to a deadlock.<br></li> - </li><br> + <br> </ul> This is how a layout definition might look like:<p> diff --git a/fhem/FHEM/11_FHT.pm b/fhem/FHEM/11_FHT.pm index 84b6e59c8..a298676ce 100755 --- a/fhem/FHEM/11_FHT.pm +++ b/fhem/FHEM/11_FHT.pm @@ -1,5 +1,26 @@ -############################################# # $Id$ +############################################################################## +# +# 11_FHT.pm +# Copyright by +# e-mail: +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Foobar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## package main; use strict; @@ -522,16 +543,16 @@ FHT_Parse($$) $val = $nVal? $nVal : "none"; # set additional warnings and trigger notify - readingsUpdate($def, "battery", $valBattery); + readingsBulkUpdate($def, "battery", $valBattery); Log $ll4, "FHT $name battery: $valBattery"; - readingsUpdate($def, "lowtemp", $valLowTemp); + readingsBulkUpdate($def, "lowtemp", $valLowTemp); Log $ll4, "FHT $name lowtemp: $valLowTemp"; - readingsUpdate($def, "window", $valWindow); + readingsBulkUpdate($def, "window", $valWindow); Log $ll4, "FHT $name window: $valWindow"; - readingsUpdate($def, "windowsensor", $valSensor); + readingsBulkUpdate($def, "windowsensor", $valSensor); Log $ll4, "FHT $name windowsensor: $valSensor"; } @@ -539,10 +560,10 @@ FHT_Parse($$) $cmd = "FHZ:$cmd"; } else { - readingsUpdate($def, $cmd, $val); + readingsBulkUpdate($def, $cmd, $val); if($cmd eq "measured-temp") { $def->{STATE} = "$cmd: $val"; - readingsUpdate($def, "temperature", $val); + readingsBulkUpdate($def, "temperature", $val); } } diff --git a/fhem/FHEM/46_TRX_LIGHT.pm b/fhem/FHEM/46_TRX_LIGHT.pm index fdc2a4179..41bfc67d5 100755 --- a/fhem/FHEM/46_TRX_LIGHT.pm +++ b/fhem/FHEM/46_TRX_LIGHT.pm @@ -1,30 +1,31 @@ -################################################################################# -# 46_TRX_LIGHT.pm +# $Id$ +############################################################################## # -# FHEM module for lighting protocols: -# X10 lighting, ARC, ELRO AB400D, Waveman, Chacon EMW200, -# IMPULS, AC (KlikAanKlikUit, NEXA, CHACON, HomeEasy UK), -# HomeEasy EU, ANSLUT, Ikea Koppla +# 46_TRX_LIGHT.pm +# FHEM module for lighting protocols: +# X10 lighting, ARC, ELRO AB400D, Waveman, Chacon EMW200, +# IMPULS, AC (KlikAanKlikUit, NEXA, CHACON, HomeEasy UK), +# HomeEasy EU, ANSLUT, Ikea Koppla +# Copyright by Willi Herzig +# e-mail: # -# Copyright (C) 2012 Willi Herzig +# This file is part of fhem. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# The GNU General Public License may also be found at http://www.gnu.org/licenses/gpl-2.0.html . +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. # -################################## +############################################################################## + # # values for "set global verbose" # 4: log unknown protocols @@ -489,7 +490,7 @@ sub TRX_LIGHT_parse_X10 { $sensor = $firstdevice == 1 ? $def->{TRX_LIGHT_devicelog} : $def->{TRX_LIGHT_devicelog2}; $val .= $current; - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); } else { $error = sprintf "TRX_LIGHT: error unknown sensor type=%x device_type=%s devn=%s first=%d command=%s", $type, $device_type, $device_name, $firstdevice, $command; Log 1, $error; @@ -498,7 +499,7 @@ sub TRX_LIGHT_parse_X10 { if (($firstdevice == 1) && $val) { $def->{STATE} = $val; - readingsUpdate($def, "state", $val); + readingsBulkUpdate($def, "state", $val); } readingsEndUpdate($def, 1); diff --git a/fhem/FHEM/46_TRX_SECURITY.pm b/fhem/FHEM/46_TRX_SECURITY.pm index 4b6fda105..1accfaa64 100755 --- a/fhem/FHEM/46_TRX_SECURITY.pm +++ b/fhem/FHEM/46_TRX_SECURITY.pm @@ -1,27 +1,29 @@ -################################################################################# -# 46_TRX_SECURITY.pm +# $Id$ +############################################################################## # -# FHEM module for X10, KD101, Visonic +# 46_TRX_LIGHT.pm +# FHEM module for X10, KD101, Visonic +# Copyright by Willi Herzig +# e-mail: # -# Copyright (C) 2012 Willi Herzig +# This file is part of fhem. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# The GNU General Public License may also be found at http://www.gnu.org/licenses/gpl-2.0.html . +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + # -################################## # # values for "set global verbose" # 4: log unknown protocols @@ -284,12 +286,12 @@ sub TRX_SECURITY_parse_X10Sec { if ($firstdevice == 1) { $val .= $current; } - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); # KD101 does not show normal, so statechange does not make sense if (($def->{STATE} ne $val) && ($device_type ne "KD101")) { $sensor = "statechange"; - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); } } else { # kr18 remote control or VISONIC_REMOTE @@ -297,12 +299,12 @@ sub TRX_SECURITY_parse_X10Sec { #$sensor = $def->{TRX_SECURITY_devicelog}; $val = $current; - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); my @cmd_split = split(/-/, $command); $sensor = $cmd_split[0]; $current = $cmd_split[1]; - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); } if ($battery ne "") { @@ -310,7 +312,7 @@ sub TRX_SECURITY_parse_X10Sec { $current = "Error"; $current = "ok" if ($battery eq "batt_ok"); $current = "low" if ($battery eq "batt_low"); - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); } if ($delay ne '') { @@ -318,12 +320,12 @@ sub TRX_SECURITY_parse_X10Sec { $current = "Error"; $current = "min" if ($delay eq "min_delay"); $current = "max" if ($delay eq "max_delay"); - readingsUpdate($def, $sensor, $current); + readingsBulkUpdate($def, $sensor, $current); } if (($firstdevice == 1) && $val) { $def->{STATE} = $val; - readingsUpdate($def, "state", $val); + readingsBulkUpdate($def, "state", $val); } readingsEndUpdate($def, 1); diff --git a/fhem/FHEM/46_TRX_WEATHER.pm b/fhem/FHEM/46_TRX_WEATHER.pm index 97fbac510..60ad5989d 100755 --- a/fhem/FHEM/46_TRX_WEATHER.pm +++ b/fhem/FHEM/46_TRX_WEATHER.pm @@ -1,4 +1,6 @@ -################################################################################# +# $Id$ +############################################################################## +# # 46_TRX_WEATHER.pm # FHEM module to decode weather sensor messages for RFXtrx # @@ -803,21 +805,21 @@ TRX_WEATHER_Parse($$) $val .= "T: ".$i->{current}." "; $sensor = "temperature"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "chilltemp") { #printf "Temperatur %2.1f %s ; ",$i->{current},$i->{units}; $val .= "CT: ".$i->{current}." "; $sensor = "windchill"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "humidity") { #printf "Luftfeuchtigkeit %d%s, %s ;",$i->{current},$i->{units},$i->{string}; $val .= "H: ".$i->{current}." "; $sensor = "humidity"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "battery") { #printf "Batterie %d%s; ",$i->{current},$i->{units}; @@ -826,7 +828,7 @@ TRX_WEATHER_Parse($$) $val .= "BAT: ".$words[0]." "; #use only first word $sensor = "battery"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "pressure") { #printf "Luftdruck %d %s, Vorhersage=%s ; ",$i->{current},$i->{units},$i->{forecast}; @@ -834,65 +836,65 @@ TRX_WEATHER_Parse($$) $val .= "P: ".$i->{current}." "; $sensor = "pressure"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); $sensor = "forecast"; - readingsUpdate($def, $sensor, $i->{forecast}); + readingsBulkUpdate($def, $sensor, $i->{forecast}); } elsif ($i->{type} eq "speed") { $val .= "W: ".$i->{current}." "; $val .= "WA: ".$i->{average}." "; $sensor = "wind_speed"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); $sensor = "wind_avspeed"; - readingsUpdate($def, $sensor, $i->{average}); + readingsBulkUpdate($def, $sensor, $i->{average}); } elsif ($i->{type} eq "direction") { $val .= "WD: ".$i->{current}." "; $val .= "WDN: ".$i->{string}." "; $sensor = "wind_dir"; - readingsUpdate($def, $sensor, $i->{current} . " " . $i->{string}); + readingsBulkUpdate($def, $sensor, $i->{current} . " " . $i->{string}); } elsif ($i->{type} eq "rain") { $val .= "RR: ".$i->{current}." "; $sensor = "rain_rate"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "train") { $val .= "TR: ".$i->{current}." "; $sensor = "rain_total"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "flip") { $val .= "F: ".$i->{current}." "; $sensor = "rain_flip"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "uv") { $val .= "UV: ".$i->{current}." "; $val .= "UVR: ".$i->{risk}." "; $sensor = "uv_val"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); $sensor = "uv_risk"; - readingsUpdate($def, $sensor, $i->{risk}); + readingsBulkUpdate($def, $sensor, $i->{risk}); } elsif ($i->{type} eq "weight") { $val .= "W: ".$i->{current}." "; $sensor = "weight"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } elsif ($i->{type} eq "hexline") { $sensor = "hexline"; - readingsUpdate($def, $sensor, $i->{current}); + readingsBulkUpdate($def, $sensor, $i->{current}); } else { print "\nTRX_WEATHER: Unknown: "; @@ -906,7 +908,7 @@ TRX_WEATHER_Parse($$) $val =~ s/^\s+|\s+$//g; $def->{STATE} = $val; - readingsUpdate($def, "state", $val); + readingsBulkUpdate($def, "state", $val); } readingsEndUpdate($def, 1); diff --git a/fhem/FHEM/49_IPCAM.pm b/fhem/FHEM/49_IPCAM.pm index 3c3f44626..6f5b4240a 100644 --- a/fhem/FHEM/49_IPCAM.pm +++ b/fhem/FHEM/49_IPCAM.pm @@ -1,5 +1,5 @@ -################################################################ # $Id$ +################################################################ # # (c) 2012 Copyright: Martin Fischer (m_fischer at gmx dot de) # All rights reserved @@ -260,7 +260,7 @@ IPCAM_getSnapshot($) { print FH $snapshot; close(FH); Log 5, "IPCAM $name snapshot $storage/$imageFile written."; - readingsUpdate($hash,"last",$lastSnapshot); + readingsBulkUpdate($hash,"last",$lastSnapshot); $hash->{STATE} = "last: $dateTime"; $hash->{READINGS}{"snapshot$seqF"}{TIME} = $dateTime; $hash->{READINGS}{"snapshot$seqF"}{VAL} = $imageFile; @@ -269,7 +269,7 @@ IPCAM_getSnapshot($) { Log GetLogLevel($name,4), "IPCAM $name image: $imageFile"; if($seq == $seqImages) { - readingsUpdate($hash,"snapshots",$seq); + readingsBulkUpdate($hash,"snapshots",$seq); $seq = 0; } readingsEndUpdate($hash, defined($hash->{LOCAL} ? 0 : 1)); diff --git a/fhem/FHEM/50_WS300.pm b/fhem/FHEM/50_WS300.pm index 1fa033b56..01ef5916e 100644 --- a/fhem/FHEM/50_WS300.pm +++ b/fhem/FHEM/50_WS300.pm @@ -1,3 +1,4 @@ +# $Id$ ################################################################ # # Copyright notice @@ -33,7 +34,7 @@ # define ws300 WS300 9 (always 9) # set WS300Device <interval(5-60 min.)> <height(0-2000 m)> <rainvalume(ml)> ################################################################ -# $Id$ + package main; @@ -287,15 +288,15 @@ WS300_Parse($$) # state $val = "T: $t H: $h Bat: $b LR: $l"; $def->{STATE} = $val; - readingsUpdate($def, 'state', $val); + readingsBulkUpdate($def, 'state', $val); # temperature - readingsUpdate($def, $txt[0], $t); + readingsBulkUpdate($def, $txt[0], $t); # humidity - readingsUpdate($def, $txt[1], $h); + readingsBulkUpdate($def, $txt[1], $h); # battery - readingsUpdate($def, $txt[5], $b); + readingsBulkUpdate($def, $txt[5], $b); # lost receives - readingsUpdate($def, $txt[6], $l); + readingsBulkUpdate($def, $txt[6], $l); Log $ll, "WS300 $def->{NAME}: $val"; @@ -307,26 +308,26 @@ WS300_Parse($$) # state $val = "T: $t H: $h W: $wind R: $rain IR: $ir Bat: $b LR: $l"; $def->{STATE} = $val; - readingsUpdate($def, 'state', $val); + readingsBulkUpdate($def, 'state', $val); $def->{CHANGED}[0] = $val; $def->{CHANGETIME}[0] = $tm; # temperature - readingsUpdate($def, $txt[0], $t); + readingsBulkUpdate($def, $txt[0], $t); # humidity - readingsUpdate($def, $txt[1], $h); + readingsBulkUpdate($def, $txt[1], $h); # wind - readingsUpdate($def, $txt[2], $wind); + readingsBulkUpdate($def, $txt[2], $wind); # rain counter - readingsUpdate($def, $txt[3], $rainc); + readingsBulkUpdate($def, $txt[3], $rainc); # is raining - readingsUpdate($def, $txt[4], $ir); + readingsBulkUpdate($def, $txt[4], $ir); # battery - readingsUpdate($def, $txt[5], $b); + readingsBulkUpdate($def, $txt[5], $b); # lost receives - readingsUpdate($def, $txt[6], $l); + readingsBulkUpdate($def, $txt[6], $l); # rain cumulative - readingsUpdate($def, $txt[8], $rain); + readingsBulkUpdate($def, $txt[8], $rain); # statistics if($actday == 99) { @@ -346,9 +347,9 @@ WS300_Parse($$) $rain_month = sprintf("%.1f",$rain_month); $ref->{acthour}{TIME} = $tm; $ref->{acthour}{VAL} = "$acthour"; - readingsUpdate($def, $txt[9], $rain_hour); - readingsUpdate($def, $txt[10], $rain_day); - readingsUpdate($def, $txt[11], $rain_month); + readingsBulkUpdate($def, $txt[9], $rain_hour); + readingsBulkUpdate($def, $txt[10], $rain_day); + readingsBulkUpdate($def, $txt[11], $rain_month); $rain_hour=0; } if($actday != $lt[3]) @@ -376,9 +377,9 @@ WS300_Parse($$) $oldrain = $rain; $ref->{acthour}{TIME} = $tm; $ref->{acthour}{VAL} = "$acthour"; - readingsUpdate($def, $txt[9], $rain_hour); - readingsUpdate($def, $txt[10], $rain_day); - readingsUpdate($def, $txt[11], $rain_month); + readingsBulkUpdate($def, $txt[9], $rain_hour); + readingsBulkUpdate($def, $txt[10], $rain_day); + readingsBulkUpdate($def, $txt[11], $rain_month); } Log $ll,"WS300 $def->{NAME}: $val"; @@ -410,15 +411,15 @@ WS300_Parse($$) # state $val = "T: $t H: $h P: $press Willi: $willi"; $def->{STATE} = $val; - readingsUpdate($def, 'state', $val); + readingsBulkUpdate($def, 'state', $val); # temperature - readingsUpdate($def, $txt[0], $t); + readingsBulkUpdate($def, $txt[0], $t); # humidity - readingsUpdate($def, $txt[1], $h); + readingsBulkUpdate($def, $txt[1], $h); # pressure - readingsUpdate($def, $txt[7], $press); + readingsBulkUpdate($def, $txt[7], $press); # willi - readingsUpdate($def, 'willi', $willi); + readingsBulkUpdate($def, 'willi', $willi); Log $ll,"WS300 $def->{NAME}: $val"; diff --git a/fhem/FHEM/57_Calendar.pm b/fhem/FHEM/57_Calendar.pm index 29f6b5115..f37f15e63 100644 --- a/fhem/FHEM/57_Calendar.pm +++ b/fhem/FHEM/57_Calendar.pm @@ -1,12 +1,26 @@ -# -# -# -# 57_Calendar.pm -# written by Dr. Boris Neubert 2012-06-01 -# e-mail: omega at online dot de -# -############################################## # $Id$ +############################################################################## +# +# 57_Calendar.pm +# Copyright by Dr. Boris Neubert +# e-mail: omega at online dot de +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## # Todos: # Support recurring events @@ -653,16 +667,16 @@ sub Calendar_CheckTimes($) { readingsBeginUpdate($hash); # clears all events in CHANGED, thus must be called first # we create one fhem event for one changed calendar event map { addEvent($hash, "changed: " . $_->uid() . " " . $_->mode() ); } @changedevents; - readingsUpdate($hash, "lastCheck", $hash->{fhem}{lastCheck}); - readingsUpdate($hash, "modeUpcoming", join(";", @upcoming)); - readingsUpdate($hash, "modeAlarm", join(";", @alarm)); - readingsUpdate($hash, "modeAlarmed", join(";", @alarmed)); - readingsUpdate($hash, "modeAlarmOrStart", join(";", @alarm,@start)); - readingsUpdate($hash, "modeChanged", join(";", @changed)); - readingsUpdate($hash, "modeStart", join(";", @start)); - readingsUpdate($hash, "modeStarted", join(";", @started)); - readingsUpdate($hash, "modeEnd", join(";", @end)); - readingsUpdate($hash, "modeEnded", join(";", @ended)); + readingsBulkUpdate($hash, "lastCheck", $hash->{fhem}{lastCheck}); + readingsBulkUpdate($hash, "modeUpcoming", join(";", @upcoming)); + readingsBulkUpdate($hash, "modeAlarm", join(";", @alarm)); + readingsBulkUpdate($hash, "modeAlarmed", join(";", @alarmed)); + readingsBulkUpdate($hash, "modeAlarmOrStart", join(";", @alarm,@start)); + readingsBulkUpdate($hash, "modeChanged", join(";", @changed)); + readingsBulkUpdate($hash, "modeStart", join(";", @start)); + readingsBulkUpdate($hash, "modeStarted", join(";", @started)); + readingsBulkUpdate($hash, "modeEnd", join(";", @end)); + readingsBulkUpdate($hash, "modeEnded", join(";", @ended)); readingsEndUpdate($hash, 1); # DoTrigger, because sub is called by a timer instead of dispatch } @@ -729,13 +743,13 @@ sub Calendar_GetUpdate($) { #$hash->{STATE}= $val; readingsBeginUpdate($hash); - readingsUpdate($hash, "calname", $calname); - readingsUpdate($hash, "lastUpdate", $hash->{fhem}{lastUpdate}); - readingsUpdate($hash, "all", join(";", @all)); - readingsUpdate($hash, "stateNew", join(";", @new)); - readingsUpdate($hash, "stateUpdated", join(";", @updated)); - readingsUpdate($hash, "stateDeleted", join(";", @deleted)); - readingsUpdate($hash, "stateChanged", join(";", @changed)); + readingsBulkUpdate($hash, "calname", $calname); + readingsBulkUpdate($hash, "lastUpdate", $hash->{fhem}{lastUpdate}); + readingsBulkUpdate($hash, "all", join(";", @all)); + readingsBulkUpdate($hash, "stateNew", join(";", @new)); + readingsBulkUpdate($hash, "stateUpdated", join(";", @updated)); + readingsBulkUpdate($hash, "stateDeleted", join(";", @deleted)); + readingsBulkUpdate($hash, "stateChanged", join(";", @changed)); readingsEndUpdate($hash, 1); # DoTrigger, because sub is called by a timer instead of dispatch $t+= $hash->{fhem}{interval}; diff --git a/fhem/FHEM/59_HCS.pm b/fhem/FHEM/59_HCS.pm index 6f6bd1160..63c2d8be7 100644 --- a/fhem/FHEM/59_HCS.pm +++ b/fhem/FHEM/59_HCS.pm @@ -1,5 +1,5 @@ -################################################################ # $Id$ +################################################################ # vim: ts=2:et # # (c) 2012 Copyright: Martin Fischer (m_fischer at gmx dot de) @@ -227,7 +227,7 @@ HCS_Set($@) { #$hash->{STATE} = "off"; $hash->{NEXTCHECK} = "offline"; readingsBeginUpdate($hash); - readingsUpdate($hash, "state", "off"); + readingsBulkUpdate($hash, "state", "off"); readingsEndUpdate($hash, 1); Log 1, "$type $name monitoring of valves interrupted"; } @@ -275,9 +275,9 @@ HCS_setState($$) { $stateDevice = ReadingsVal($name,"device",""); readingsBeginUpdate($hash); - readingsUpdate($hash, "device", $cmd); - readingsUpdate($hash, "overdrive", $overdrive) if($sensor); - readingsUpdate($hash, "state", $state); + readingsBulkUpdate($hash, "device", $cmd); + readingsBulkUpdate($hash, "overdrive", $overdrive) if($sensor); + readingsBulkUpdate($hash, "state", $state); readingsEndUpdate($hash, 1); if($defs{$device}) { @@ -455,10 +455,10 @@ HCS_getValves($$) { readingsBeginUpdate($hash); for my $d (sort keys %valves) { - readingsUpdate($hash, $d."_state", $valves{$d}{state}); - readingsUpdate($hash, $d."_demand", $valves{$d}{demand}); + readingsBulkUpdate($hash, $d."_state", $valves{$d}{state}); + readingsBulkUpdate($hash, $d."_demand", $valves{$d}{demand}); } - readingsUpdate($hash, "sensor", $tempValue) if(defined($tempValue) && $tempValue ne ""); + readingsBulkUpdate($hash, "sensor", $tempValue) if(defined($tempValue) && $tempValue ne ""); readingsEndUpdate($hash, 1); return ($list) ? $ret : $heatDemand; diff --git a/fhem/FHEM/59_Twilight.pm b/fhem/FHEM/59_Twilight.pm index 31ec44194..4f71ede44 100644 --- a/fhem/FHEM/59_Twilight.pm +++ b/fhem/FHEM/59_Twilight.pm @@ -1,8 +1,27 @@ +# $Id$ +############################################################################## # -# 59_Twilight.pm -# written by Sebastian Stuecker based on Twilight.tcl http://www.homematic-wiki.info/mw/index.php/TCLScript:twilight +# 59_Twilight.pm +# Copyright by Sebastian Stuecker +# based on Twilight.tcl http://www.homematic-wiki.info/mw/index.php/TCLScript:twilight +# e-mail: omega at online dot de # -############################################## +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## package main; use strict; @@ -183,7 +202,7 @@ Twilight_GetUpdate($) } Twilight_getWeatherHorizon($hash); - readingsUpdate($hash,"condition",$hash->{CONDITION}); + readingsBulkUpdate($hash,"condition",$hash->{CONDITION}); if($hash->{WEATHER_HORIZON} > (89-$hash->{LATITUDE}+$declination) ){ $hash->{WEATHER_HORIZON} = 89-$hash->{LATITUDE}+$declination; } @@ -203,10 +222,10 @@ Twilight_GetUpdate($) ($sunrise_set[$i]{RISE}, $sunrise_set[$i]{SET})= Twilight_calc($latitude, $longitude, $sunrise_set[$i]{DEGREE}, $declination, $timezone, $midseconds, $timediff); - readingsUpdate($hash, $sunrise_set[$i]{SR_NAME}, + readingsBulkUpdate($hash, $sunrise_set[$i]{SR_NAME}, $sunrise_set[$i]{RISE} eq "nan" ? "undefined" : strftime("%H:%M:%S",localtime($sunrise_set[$i]{RISE}))); - readingsUpdate($hash, $sunrise_set[$i]{SS_NAME}, + readingsBulkUpdate($hash, $sunrise_set[$i]{SS_NAME}, $sunrise_set[$i]{SET} eq "nan" ? "undefined" : strftime("%H:%M:%S",localtime($sunrise_set[$i]{SET}))); } @@ -218,10 +237,10 @@ Twilight_GetUpdate($) for(my $i=0; $i < 12; $i++) { my $nexttime=$sunrise_set[6-abs($i-6)-$k]{$half}; if($nexttime ne "nan" && $nexttime > $now) { - readingsUpdate($hash, "light", 6-abs($i-6)); - readingsUpdate($hash, "nextEvent", + readingsBulkUpdate($hash, "light", 6-abs($i-6)); + readingsBulkUpdate($hash, "nextEvent", $sunrise_set[6-abs($i-6)-$k]{$sname}); - readingsUpdate($hash, "nextEventTime", + readingsBulkUpdate($hash, "nextEventTime", strftime("%H:%M:%S",localtime($nexttime))); if($i==5 || $i==6) { # Weather @@ -247,12 +266,12 @@ Twilight_GetUpdate($) if(!$alarmOffset) { $alarmOffset = 900; - readingsUpdate($hash,"light", 0); + readingsBulkUpdate($hash,"light", 0); $hash->{STATE}=0; } if(!$hash->{LOCAL}) { InternalTimer($now+$alarmOffset, "Twilight_GetUpdate", $hash, 0); - readingsUpdate($hash,"nextUpdate", + readingsBulkUpdate($hash,"nextUpdate", strftime("%H:%M:%S",localtime($now+$alarmOffset))); } diff --git a/fhem/FHEM/59_Weather.pm b/fhem/FHEM/59_Weather.pm index a30705346..abe129af9 100755 --- a/fhem/FHEM/59_Weather.pm +++ b/fhem/FHEM/59_Weather.pm @@ -1,13 +1,28 @@ -# -# -# 59_Weather.pm -# maintainer: Dr. Boris Neubert 2009-06-01 -# e-mail: omega at online dot de -# Port to Yahoo by Erwin Menschhorn 2012-08-30 -# e-mail emenschhorn at gmail dot com -# -############################################## # $Id$ +############################################################################## +# +# 59_Weather.pm +# Copyright by Dr. Boris Neubert +# e-mail: omega at online dot de +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + + package main; use strict; @@ -165,13 +180,13 @@ sub Weather_UpdateReading($$$$) { my $reading= $prefix . $key; - readingsUpdate($hash,$reading,$value); + readingsBulkUpdate($hash,$reading,$value); if($reading eq "temp_c") { - readingsUpdate($hash,"temperature",$value); # additional entry for compatibility + readingsBulkUpdate($hash,"temperature",$value); # additional entry for compatibility } if($reading eq "wind_condition") { $value=~ s/.*?(\d+).*/$1/; # extract numeric - readingsUpdate($hash,"wind",wind_in_km_per_h($value,$unitsystem)); # additional entry for compatibility + readingsBulkUpdate($hash,"wind",wind_in_km_per_h($value,$unitsystem)); # additional entry for compatibility } return 1; @@ -230,19 +245,19 @@ sub Weather_RetrieveData($) my $loc = ""; $loc = $1 if (defined($1)); $loc .= ", $2" if (defined($2)); - readingsUpdate($hash, "city", $loc); + readingsBulkUpdate($hash, "city", $loc); } ### current condition and forecast if (($tag eq "yweather:condition" ) || ($tag eq "yweather:forecast" )) { my $code = (($value =~/code="([0-9]*?)".*/) ? $1 : undef); if (defined($code)) { - readingsUpdate($hash, $prefix . "code", $code); + readingsBulkUpdate($hash, $prefix . "code", $code); my $text = $YahooCodes_i18n[$code]; - if ($text) { readingsUpdate($hash, $prefix . "condition", $text); } + if ($text) { readingsBulkUpdate($hash, $prefix . "condition", $text); } #### add icon logic here - generate from code $text = $iconlist[$code]; - readingsUpdate($hash, $prefix . "icon", $text) if ($text); + readingsBulkUpdate($hash, $prefix . "icon", $text) if ($text); } } @@ -250,30 +265,30 @@ sub Weather_RetrieveData($) if ($tag eq "yweather:condition" ) { my $temp = (($value =~/temp="(-?[0-9.]*?)".*/) ? $1 : undef); if ($temp) { - readingsUpdate($hash, "temperature", $temp); - readingsUpdate($hash, "temp_c", $temp); # compatibility + readingsBulkUpdate($hash, "temperature", $temp); + readingsBulkUpdate($hash, "temp_c", $temp); # compatibility $temp = int(( $temp * 9 / 5 ) + 32.5); # Celsius to Fahrenheit - readingsUpdate($hash, "temp_f", $temp); # compatibility + readingsBulkUpdate($hash, "temp_f", $temp); # compatibility } my $datum = (($value =~/date=".*? ([0-9].*)".*/) ? $1 : undef); - readingsUpdate($hash, "current_date_time", $datum) if (defined($1)); + readingsBulkUpdate($hash, "current_date_time", $datum) if (defined($1)); my $day = (($value =~/date="(.*?), .*/) ? $1 : undef); if ($day) { - readingsUpdate($hash, "day_of_week", $wdays_txt_i18n{$day}); + readingsBulkUpdate($hash, "day_of_week", $wdays_txt_i18n{$day}); } } ### forecast if ($tag eq "yweather:forecast" ) { my $low_c = (($value =~/low="(-?[0-9.]*?)".*/) ? $1 : undef); - if ($low_c) { readingsUpdate($hash, $prefix . "low_c", $low_c); } + if ($low_c) { readingsBulkUpdate($hash, $prefix . "low_c", $low_c); } my $high_c = (($value =~/high="(-?[0-9.]*?)".*/) ? $1 : undef); - if ($high_c) { readingsUpdate($hash, $prefix . "high_c", $high_c); } + if ($high_c) { readingsBulkUpdate($hash, $prefix . "high_c", $high_c); } my $day1 = (($value =~/day="(.*?)" .*/) ? $1 : undef); # forecast if ($day1) { - readingsUpdate($hash, $prefix . "day_of_week", $wdays_txt_i18n{$day1}); + readingsBulkUpdate($hash, $prefix . "day_of_week", $wdays_txt_i18n{$day1}); } } @@ -281,28 +296,28 @@ sub Weather_RetrieveData($) if ($tag eq "yweather:atmosphere" ) { $value =~/humidity="([0-9.]*?)" .*visibility="([0-9.]*?|\s*?)" .*pressure="([0-9.]*?)" .*rising="([0-9.]*?)" .*/; - if ($1) { readingsUpdate($hash, "humidity", $1); } + if ($1) { readingsBulkUpdate($hash, "humidity", $1); } my $vis = (($2 eq "") ? " " : int($2+0.5)); # clear visibility field - readingsUpdate($hash, "visibility", $vis); - if ($3) { readingsUpdate($hash, "pressure", int($3+0.5)); } + readingsBulkUpdate($hash, "visibility", $vis); + if ($3) { readingsBulkUpdate($hash, "pressure", int($3+0.5)); } if ($4) { - readingsUpdate($hash, "pressure_trend", $4); - readingsUpdate($hash, "pressure_trend_txt", $pressure_trend_txt_i18n{$4}); - readingsUpdate($hash, "pressure_trend_sym", $pressure_trend_sym{$4}); + readingsBulkUpdate($hash, "pressure_trend", $4); + readingsBulkUpdate($hash, "pressure_trend_txt", $pressure_trend_txt_i18n{$4}); + readingsBulkUpdate($hash, "pressure_trend_sym", $pressure_trend_sym{$4}); } } ### wind if ($tag eq "yweather:wind" ) { $value =~/chill="(-?[0-9.]*?)" .*direction="([0-9.]*?)" .*speed="([0-9.]*?)" .*/; - readingsUpdate($hash, "wind_chill", $1) if (defined($1)); - readingsUpdate($hash, "wind_direction", $2) if (defined($2)); + readingsBulkUpdate($hash, "wind_chill", $1) if (defined($1)); + readingsBulkUpdate($hash, "wind_direction", $2) if (defined($2)); my $windspeed= defined($3) ? int($3+0.5) : ""; - readingsUpdate($hash, "wind_speed", $windspeed); - readingsUpdate($hash, "wind", $windspeed); # duplicate for compatibility + readingsBulkUpdate($hash, "wind_speed", $windspeed); + readingsBulkUpdate($hash, "wind", $windspeed); # duplicate for compatibility if (defined($2) & defined($3)) { my $wdir = degrees_to_direction($2,@directions_txt_i18n); - readingsUpdate($hash, "wind_condition", "Wind: $wdir $windspeed km/h"); # compatibility + readingsBulkUpdate($hash, "wind_condition", "Wind: $wdir $windspeed km/h"); # compatibility } } } diff --git a/fhem/FHEM/67_ECMDDevice.pm b/fhem/FHEM/67_ECMDDevice.pm index 5ad1f3a7a..f2c018621 100644 --- a/fhem/FHEM/67_ECMDDevice.pm +++ b/fhem/FHEM/67_ECMDDevice.pm @@ -1,11 +1,27 @@ +# $Id$############################################################################## # +# 67_ECMDDevice.pm +# Copyright by Dr. Boris Neubert +# e-mail: omega at online dot de # -# 66_ECMDDevice.pm -# written by Dr. Boris Neubert 2011-01-15 -# e-mail: omega at online dot de +# This file is part of fhem. # -############################################## -# $Id$ +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + + package main; use strict; @@ -79,10 +95,7 @@ ECMDDevice_Changed($$$) { my ($hash, $cmd, $value)= @_; - - readingsBeginUpdate($hash); - readingsUpdate($hash, $cmd, $value); - readingsEndUpdate($hash, 1); + readingsSingleUpdate($hash, $cmd, $value, 1); $hash->{STATE} = "$cmd $value"; diff --git a/fhem/FHEM/70_TellStick.pm b/fhem/FHEM/70_TellStick.pm index 0beb98713..c0d7614a4 100644 --- a/fhem/FHEM/70_TellStick.pm +++ b/fhem/FHEM/70_TellStick.pm @@ -29,7 +29,7 @@ # # Contributed by Kai 'wusel' Siering <wusel+fhem@uu.org> in 2012 # Based in part on work for FHEM by other authors ... -# $Id: 70_TellStick.pm 1 2011-11-12 07:51:08Z real-wusel $ +# $Id$ ########################### package main; diff --git a/fhem/FHEM/71_YAMAHA_AVR.pm b/fhem/FHEM/71_YAMAHA_AVR.pm index 2ac929c99..b831aa383 100755 --- a/fhem/FHEM/71_YAMAHA_AVR.pm +++ b/fhem/FHEM/71_YAMAHA_AVR.pm @@ -1,22 +1,39 @@ -# -# Module: YAMAHA_AVR -# -# An FHEM Perl module for controlling Yamaha AV-Receivers -# via network connection. As the interface is standardized -# within all Yamaha AV-Receivers, this module should work -# with any receiver which has an ethernet or wlan connection. -# -# Currently supported are: power (on|off) -# input (hdmi1|hdmi2|...) -# volume (-50 ... 10) -# mute (on|off) -# -# Of course there are more possibilities than these 4 commands. -# But in my oppinion these are the most relevant usecases within FHEM. -# # $Id$ +############################################################################## # -################################### +# 71_YAMAHA_AVR.pm +# An FHEM Perl module for controlling Yamaha AV-Receivers +# via network connection. As the interface is standardized +# within all Yamaha AV-Receivers, this module should work +# with any receiver which has an ethernet or wlan connection. +# +# Currently supported are: power (on|off) +# input (hdmi1|hdmi2|...) +# volume (-50 ... 10) +# mute (on|off) +# +# Of course there are more possibilities than these 4 commands. +# But in my oppinion these are the most relevant usecases within fhem. +# +# Copyright by Markus Bloch +# e-mail: +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## package main; @@ -91,7 +108,7 @@ YAMAHA_AVR_GetStatus($;$) if($return =~ /<Power>(.+)<\/Power>/) { $power = $1; - readingsUpdate($hash, "power", lc($power)); + readingsBulkUpdate($hash, "power", lc($power)); if($power eq "Standby") { $power = "Off"; @@ -102,13 +119,13 @@ YAMAHA_AVR_GetStatus($;$) } if($return =~ /<Volume><Lvl><Val>(.+)<\/Val><Exp>(.+)<\/Exp><Unit>.+<\/Unit><\/Lvl><Mute>(.+)<\/Mute><\/Volume>/) { - readingsUpdate($hash, "volume_level", ($1 / 10 ** $2)); - readingsUpdate($hash, "mute", lc($3)); + readingsBulkUpdate($hash, "volume_level", ($1 / 10 ** $2)); + readingsBulkUpdate($hash, "mute", lc($3)); } if($return =~ /<Input_Sel>(.+)<\/Input_Sel>/) { - readingsUpdate($hash, "input", InputParamToFhemInput(lc($1), 0)); + readingsBulkUpdate($hash, "input", InputParamToFhemInput(lc($1), 0)); } readingsEndUpdate($hash, 1); @@ -176,7 +193,7 @@ YAMAHA_AVR_Set($@) if($result =~ /RC="0"/ and $result =~ /<Power><\/Power>/) { # As the receiver startup takes about 5 seconds, the status will be already set, if the return code of the command is 0. - readingsUpdate($hash, "power", "on"); + readingsBulkUpdate($hash, "power", "on"); $hash->{STATE} = "on"; return undef; } diff --git a/fhem/FHEM/72_FB_CALLMONITOR.pm b/fhem/FHEM/72_FB_CALLMONITOR.pm index dadd54686..9ceea8b83 100755 --- a/fhem/FHEM/72_FB_CALLMONITOR.pm +++ b/fhem/FHEM/72_FB_CALLMONITOR.pm @@ -1,14 +1,30 @@ -############################################## -# -# Modul: FB_CALLMONITOR -# -# Connects to a FritzBox Fon via network. -# -# When a call is received or takes place it creates an event with further call informations. -# -# This module has no sets or gets as it is only used for event triggering. -# # $Id$ +############################################################################## +# +# 72_FB_CALLMONITOR.pm +# Connects to a FritzBox Fon via network. +# When a call is received or takes place it creates an event with further call informations. +# This module has no sets or gets as it is only used for event triggering. +# +# Copyright by Markus Bloch +# e-mail: +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## package main; @@ -99,13 +115,13 @@ FB_CALLMONITOR_Read($) @array = split(";", $data); readingsBeginUpdate($hash); - readingsUpdate($hash, "event", lc($array[1])); - readingsUpdate($hash, "external_number", $array[3]) if(not $array[3] eq "0" and $array[1] eq "RING"); - readingsUpdate($hash, "internal_number", $array[4]) if($array[1] eq "RING"); - readingsUpdate($hash, "external_number" , $array[5]) if($array[1] eq "CALL"); - readingsUpdate($hash, "internal_number", $array[4]) if($array[1] eq "CALL"); - readingsUpdate($hash, "used_connection", $array[5]) if($array[1] eq "RING"); - readingsUpdate($hash, "used_connection", $array[6]) if($array[1] eq "CALL"); + readingsBulkUpdate($hash, "event", lc($array[1])); + readingsBulkUpdate($hash, "external_number", $array[3]) if(not $array[3] eq "0" and $array[1] eq "RING"); + readingsBulkUpdate($hash, "internal_number", $array[4]) if($array[1] eq "RING"); + readingsBulkUpdate($hash, "external_number" , $array[5]) if($array[1] eq "CALL"); + readingsBulkUpdate($hash, "internal_number", $array[4]) if($array[1] eq "CALL"); + readingsBulkUpdate($hash, "used_connection", $array[5]) if($array[1] eq "RING"); + readingsBulkUpdate($hash, "used_connection", $array[6]) if($array[1] eq "CALL"); readingsEndUpdate($hash, 1); diff --git a/fhem/FHEM/98_JsonList.pm b/fhem/FHEM/98_JsonList.pm index 280fd8b56..c87738c51 100644 --- a/fhem/FHEM/98_JsonList.pm +++ b/fhem/FHEM/98_JsonList.pm @@ -431,7 +431,7 @@ CommandJsonList($$) "room": "Server", "statefile": "/var/cache/fhem/fhem.save", "verbose": "4", - "version": "=VERS= from =DATE= ($Id: fhem.pl,v $)" + "version": "=VERS= from =DATE= ($Id$)" }, "READINGS": [] } diff --git a/fhem/FHEM/98_WOL.pm b/fhem/FHEM/98_WOL.pm index b620a99ce..bc44dbe16 100644 --- a/fhem/FHEM/98_WOL.pm +++ b/fhem/FHEM/98_WOL.pm @@ -1,5 +1,5 @@ ############################################## -# $Id: 99_WOL.pm 1116 2012-01-21 15:01:34Z matthiasklass $ +# $Id$ package main; use strict; diff --git a/fhem/FHEM/98_structure.pm b/fhem/FHEM/98_structure.pm index 898a40ca4..53b9abcec 100755 --- a/fhem/FHEM/98_structure.pm +++ b/fhem/FHEM/98_structure.pm @@ -1,5 +1,26 @@ -############################################## # $Id$ +############################################################################## +# +# 98_structure.pm +# Copyright by +# e-mail: +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## package main; use strict; @@ -232,9 +253,7 @@ sub structure_Notify($$) Log 3, "Update structure '" .$me . "' to " . $newState . " because device '" .$dev->{NAME}. "' has changed"; $hash->{STATE} = $newState; - readingsBeginUpdate($hash); - readingsUpdate($hash, "state", $newState); - readingsEndUpdate($hash, 1); + readingsSingleUpdate($hash, "state", $newState, 1); } undef; } diff --git a/fhem/FHEM/98_telnet.pm b/fhem/FHEM/98_telnet.pm index 14857cad8..d649d385d 100644 --- a/fhem/FHEM/98_telnet.pm +++ b/fhem/FHEM/98_telnet.pm @@ -1,5 +1,5 @@ ############################################## -# $Id: 98_telnet.pm 1098 2011-11-12 07:51:08Z rudolfkoenig $ +# $Id$ # Note: this is not really a telnet server, but a TCP server with slight telnet # features (disable echo on password) diff --git a/fhem/FHEM/FritzBoxUtils.pm b/fhem/FHEM/FritzBoxUtils.pm index c2ea99b63..1052dba75 100644 --- a/fhem/FHEM/FritzBoxUtils.pm +++ b/fhem/FHEM/FritzBoxUtils.pm @@ -1,5 +1,5 @@ ############################################## -# $Id: FritzBoxUtils.pm 1148 2011-12-28 19:21:19Z rudolfkoenig $ +# $Id$ package main; use strict; diff --git a/fhem/FHEM/TcpServerUtils.pm b/fhem/FHEM/TcpServerUtils.pm index 75d7e6c87..cd4ab7546 100644 --- a/fhem/FHEM/TcpServerUtils.pm +++ b/fhem/FHEM/TcpServerUtils.pm @@ -1,5 +1,5 @@ ############################################## -# $Id: TcpServerUtils.pm 1098 2011-11-12 07:51:08Z rudolfkoenig $ +# $Id$ package main; use strict; diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 5462b05fd..97eceade8 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -2913,11 +2913,11 @@ readingsEndUpdate($$) { } # -# Call readingsUpdate to update the reading. +# Call readingsBulkUpdate to update the reading. # Example: readingsUpdate($hash,"temperature",$value); # sub -readingsUpdate($$$) { +readingsBulkUpdate($$$) { my ($hash,$reading,$value)= @_; my $name= $hash->{NAME}; @@ -2955,6 +2955,19 @@ readingsUpdate($$$) { return $rv; } +# +# this is a shorthand call +# +sub +readingsSingleUpdate($$$$) { + + my ($hash,$reading,$value,$dotrigger)= @_; + readingsBeginUpdate($hash); + my $rv= readingsBulkUpdate($hash,$reading,$value); + readingsEndUpdate($hash,$dotrigger); + return $rv; +} + ############################################################################### # # date and time routines