# $Id$ package main; use strict; use warnings; sub CommandExportdevice($$); ######################################## sub exportdevice_Initialize($$) { my %hash = ( Fn => "CommandExportdevice", Hlp => "[devspec] [quote]", ); $cmds{exportdevice} = \%hash; } ######################################## sub CommandExportdevice($$) { my ( $cl, $param ) = @_; my @a = split( "[ \t][ \t]*", $param ); my $quote = 0; my $str = ""; return "Usage: exportdevice [devspec] [quote]" if ( $a[0] eq "?" ); $quote = 1 if ( $a[0] eq "quote" || $a[1] eq "quote" ); $a[0] = ".*" if ( int(@a) < 1 || $a[0] eq "quote" ); my $mname = ""; foreach my $dev ( devspec2array( $a[0], $cl ) ) { next if ( !$defs{$dev} ); # module header (only once) if ( $mname ne $defs{$dev}{TYPE} ) { $mname = $defs{$dev}{TYPE}; my $ver = fhem "version $defs{$dev}{TYPE}"; $ver =~ s/\n+/\n# /g; $ver =~ s/^/# /g; $str .= "\n\n# TYPE: $defs{$dev}{TYPE}\n$ver\n\n"; } # device definition if ( $dev ne "global" ) { my $def = $defs{$dev}{DEF}; if ( defined($def) ) { if ($quote) { $def =~ s/;/;;/g; $def =~ s/\n/\\\n/g; } $str .= "define $dev $defs{$dev}{TYPE} $def\n"; } else { $str .= "define $dev $defs{$dev}{TYPE}\n"; } } # device attributes foreach my $a ( sort { return -1 if ( $a eq "userattr" ); # userattr must be first return 1 if ( $b eq "userattr" ); return $a cmp $b; } keys %{ $attr{$dev} } ) { next if ( $dev eq "global" && ( $a eq "configfile" || $a eq "version" ) ); my $val = $attr{$dev}{$a}; if ($quote) { $val =~ s/;/;;/g; $val =~ s/\n/\\\n/g; } $str .= "attr $dev $a $val\n"; } $str .= "\n"; } my $return; $return = "#\n# Flat Export created by " if ( !$quote ); $return = "#\n# Quoted Export created by " if ($quote); return $return . AttrVal( "global", "version", "fhem.pl:?/?" ) . "\n# at " . TimeNow() . "\n#" . $str if ( $str ne "" ); return "No device found: $a[0]"; } 1; =pod =item command =item summary exports definition and attributes of devices =item summary_DE exportiert die Definition und die Attribute von Geräten =begin html
exportdevice [devspec] [quote]
fhem> exportdevice Office
#
# Export created by fhem.pl:12022/2016-08-21
# on 2016-08-22 01:02:59
#
# TYPE: FS20
# File Rev Last Change
# 10_FS20.pm 11984 2016-08-19 12:47:50Z rudolfkoenig
define Office FS20 1234 12
attr Office userattr Light Light_map structexclude
attr Office IODev CUL_0
attr Office Light AllLights
attr Office group Single Lights
attr Office icon light_office
attr Office model fs20st
attr Office room Light
=end html
=begin html_DE
exportdevice [devspec] [quote]
fhem> exportdevice Office
#
# Export created by fhem.pl:12022/2016-08-21
# on 2016-08-22 01:02:59
#
# TYPE: FS20
# File Rev Last Change
# 10_FS20.pm 11984 2016-08-19 12:47:50Z rudolfkoenig
define Office FS20 1234 12
attr Office userattr Light Light_map structexclude
attr Office IODev CUL_0
attr Office Light AllLights
attr Office group Single Lights
attr Office icon light_office
attr Office model fs20st
attr Office room Light
=end html_DE
=cut