diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index faeb01508..8f74ce7d9 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -571,8 +571,8 @@ our %zwave_deviceSpecial; my $zwave_cryptRijndael = 0; my $zwave_lastHashSent; -my %zwave_pepperLink; -my %zwave_pepperImg; +my (%zwave_link, %zwave_img); +my @helpSites = ("alliance", "pepper"); # standard definitions for regular expression # naming scheme: p_name @@ -629,24 +629,26 @@ ZWave_Initialize($) } ################ - # Read in the pepper translation table - my $fn = $attr{global}{modpath}."/FHEM/lib/zwave_pepperlinks.csv.gz"; - my $gz = gzopen($fn, "rb"); - if($gz) { - my $line; - while($gz->gzreadline($line)) { - chomp($line); - my @a = split(",",$line); - $zwave_pepperLink{$a[0]} = $a[1]; - $zwave_pepperImg{$a[0]} = $a[2]; + # Read in the pepper/alliance translation table + for my $n (@helpSites) { + my $fn = $attr{global}{modpath}."/FHEM/lib/zwave_${n}links.csv.gz"; + my $gz = gzopen($fn, "rb"); + if($gz) { + my $line; + while($gz->gzreadline($line)) { + chomp($line); + my @a = split(",",$line); + $zwave_link{$n}{lc($a[0])} = $a[1]; + $zwave_img{$n}{lc($a[0])} = $a[2]; + } + $gz->gzclose(); + } else { + Log 3, "Can't open $fn: $!"; } - $gz->gzclose(); - } else { - Log 3, "Can't open $fn: $!"; } # Create cache directory - $fn = $attr{global}{modpath}."/www/deviceimages"; + my $fn = $attr{global}{modpath}."/www/deviceimages"; if(! -d $fn) { mkdir($fn) || Log 3, "Can't create $fn"; } $fn .= "/zwave"; if(! -d $fn) { mkdir($fn) || Log 3, "Can't create $fn"; } @@ -4575,18 +4577,25 @@ sub ZWave_getPic($) { my ($model) = @_; - my $img = $zwave_pepperImg{$model}; - return "" if(!$img); - - my $fn = $attr{global}{modpath}."/www/deviceimages/zwave/$img"; - if(!-f $fn) { # Cache the picture - my $data = GetFileFromURL("http://fhem.de/deviceimages/zwave/$img"); - if($data && open(FH,">$fn")) { - print FH $data; - close(FH) + + for my $n (@helpSites) { + my $img = $zwave_img{$n}{$model}; + next if(!$img); + my $fn = $attr{global}{modpath}."/www/deviceimages/zwave/$img"; + if(!-f $fn) { # Cache the picture + my $url = $n eq "alliance" ? + "http://products.z-wavealliance.org/ProductImages/Index?productName=": + "http://fhem.de/deviceimages/zwave/"; + Log 3, "ZWave: downloading $url/$img for $model"; + my $data = GetFileFromURL("$url/$img"); + if($data && open(FH,">$fn")) { + print FH $data; + close(FH) + } } + return "$FW_ME/deviceimages/zwave/$img"; } - return "$FW_ME/deviceimages/zwave/$img"; + return ""; } sub @@ -4597,26 +4606,22 @@ ZWave_fhemwebFn($$$$) my $pl = ""; # Pepper link and image my $model = ReadingsVal($d, "modelId", ""); if($model) { - my $link = $zwave_pepperLink{$model}; - $pl .= ""; - - my $img = $zwave_pepperImg{$model}; - if($img && !$FW_ss) { - $pl .= "
"; - $pl .= ""; + for my $n (@helpSites) { + my $link = $zwave_link{$n}{$model}; + next if(!$link); + $pl .= ""; + } + + my $img = ZWave_getPic($model); + if($img && !$FW_ss) { + $pl .= "
"; + $pl .= ""; $pl .= "
"; - my $fn = $attr{global}{modpath}."/www/deviceimages/zwave/$img"; - if(!-f $fn) { # Cache the picture - my $data = GetFileFromURL("http://fhem.de/deviceimages/zwave/$img"); - if($data && open(FH,">$fn")) { - print FH $data; - close(FH) - } - } } } diff --git a/fhem/FHEM/lib/zwave_alliancelinks.csv.gz b/fhem/FHEM/lib/zwave_alliancelinks.csv.gz new file mode 100644 index 000000000..a1b07033a Binary files /dev/null and b/fhem/FHEM/lib/zwave_alliancelinks.csv.gz differ diff --git a/fhem/contrib/zwavealliance.images.parse b/fhem/contrib/zwavealliance.images.parse new file mode 100644 index 000000000..b46afc31c --- /dev/null +++ b/fhem/contrib/zwavealliance.images.parse @@ -0,0 +1,587 @@ +#/usr/bin/perl + +# Creates the FHEM file from the raw data + +# Usage: zwavealliance.images.parse downloaddir +# Downloaddir is willed with the following script: +# i=1 +# while test $i -lt 2063 +# do +# echo $i +# wget -q http://products.z-wavealliance.org/products/$i +# i=`expr $i + 1` +# done + +die("Usage: zwavealliance.images.parse downloaddir\n") if(int(@ARGV) != 1); + + +my %mf; +while(my $l = ) { + chomp($l); + my @a = split(" ", $l, 2); + $a[1] =~ s/[^A-Za-z0-9]//g; + $a[1] = lc($a[1]); + die("Double entry for $l\n") if($mf{$a[1]}); + $mf{$a[1]} = $a[0]; + print "MF ADD >$a[1]<\n"; +} + +open(OF, ">zwavealliance_links.csv"); +opendir(DIRH, $ARGV[0]) || die("Cant open $ARGV[0]\n"); +my @files; +while(my $fn = readdir(DIRH)) { + push @files, $fn; +} + +for my $fn (sort { $a <=> $b } @files) { + my $path = "$ARGV[0]/$fn"; + next if (! -f $path); + print("$fn\n"); + open(FH, $path) || die("Cant open $path\n"); + my ($bn,$bn2,$mi,$pti,$pi,$pic) = ('','','','','',''); + while(my $l = ) { + chomp($l); + + if($l =~ m,
Brand Name:(.*)
,) { + $bn = $1; + $bn2 = $bn; + $bn2 =~ s/[^A-Za-z0-9]//g; + $bn2 = lc($bn2); + $mi = $mf{$bn2} if(defined($mf{$bn2})); + } + + $pti = $1 if($l =~ m,
Product Type ID: 0x(....)
,); + $pi = $1 if($l =~ m,
Product ID: 0x(....)
,); + $pic = $1 if($l =~ m,productName=(.*)'.*class=.ProductDetails,); + + } + close(FH); + if($mi eq '' && $pti eq '' && $pi eq '' && -s $path eq 4880) { + printf "DELETE empty $path\n"; + next; + } + if($mi eq '') { + printf "Missing manufId for $fn: $bn/$bn2\n"; + next; + } + if($pti eq '' || $pi eq '') { + printf "Missing parameters for $fn: $bn/$bn2/$mi/$pti/$pi\n"; + next; + } + printf OF "%s-%s-%s,%s,%s\n", $mi,$pti,$pi,$fn,$pic; +} +closedir(DIRH); +close(OF); + +__DATA__ +0000 Sigma Designs (Former Zensys) +0000 sigmadesigns +0001 ACT - Advanced Control Technologies +0002 Danfoss +0003 Wr@p +0004 Exhausto +0005 Intermatic +0006 Intel +0007 Vimar CRS +0008 Wayne Dalton +0009 Sylvania +000A Techniku +000B CasaWorks +000C HomeSeer Technologies +000C HomeSeer +000D Home Automated Living +000E Mohito Networks +000F ConvergeX Ltd. +0010 Residential Control Systems, Inc. (RCS) +0010 rcs +0011 iCOM Technology b.v. +0012 Tell It Online +0013 Internet Dom +0014 Cyberhouse +0015 Lexel +0016 PowerLynx +0017 HiTech Automation +0018 Balboa Instruments +0019 ControlThink LC +001A Cooper Wiring Devices +001A aspirerfwirelessbyeatonwiring +001B ELK Products, Inc. +001C IntelliCon +001D Leviton +001D visiarf +001E Express Controls +001E expresscontrolsllc +001F Scientia Technologies, Inc. +0020 Universal Electronics Inc. +0020 GE +0021 Zykronix +0022 A-1 Components +0023 Boca Devices +0024 Flue Sentinel +0025 Loudwater Technologies, LLC +0026 BuLogics +0027 Meedio, LLC +0028 2B Electronics +0029 Asia Heading +002A 3e Technologies +002B Atech +002C BeSafer +002D Broadband Energy Networks Inc. +002E Carrier +002F Color Kinetics Incorporated +0030 Cytech Technology Pre Ltd. +0031 Destiny Networks +0032 Digital 5, Inc. +0033 Electronic Solutions +0033 electronicsolutionsinc +0034 El-Gev Electronics LTD +0035 Embedit A/S +0036 Exceptional Innovations +0037 Foard Systems +0038 Home Director +0039 Honeywell +0039 mkelectric +003A Inlon Srl +003B Allegion +003C Lifestyle Networks +003D Marmitek BV +003E Martec Access Products +003F Motorola +0040 Novar Electrical Devices and Systems (EDS) +0041 OpenPeak Inc. +0042 Pragmatic Consulting Inc. +0043 Senmatic A/S +0044 Sequoia Technology LTD +0045 Sine Wireless +0046 Smart Products, Inc. +0047 Somfy +0048 Telsey +0049 Twisthink +004A Visualize +004B Watt Stopper +004C Woodward Labs +004D Xanboo +004E Zdata, LLC. +004F Z-Wave Technologia +0050 Homepro +0050 advancedcontroltechnologiesinc +0051 Lagotek Corporation +0052 Bit7 Inc. +0053 Viewsonic +0054 Superna +0055 Tridium +0056 Impact Technologies and Products +0057 Whirlpool +0058 Vitelec +0059 Horstmann Controls Limited +0059 Horstmann +005A American Grid, Inc. +005B Home Automation Inc. +005B HAI +005C Terra Optima B.V. (tidligere Primair Services) +005D Pulse Technologies (Aspalis) +005E ViewSonic Corporation +005F IQ-Group +0060 Everspring +0061 Impact Technologies BV +0062 LVI Produkter AB +0063 Jasco Products +0063 jascoproductscompany +0064 Reitz-Group.de +0064 reitzgmbh +0065 RS Scene Automation +0066 TrickleStar +0067 CyberTAN Technology, Inc. +0068 Good Way Technology Co., Ltd +0069 Seluxit +006A Kellendonk Elektronik +006B Tricklestar Ltd. (former Empower Controls Ltd.) +006C Ingersoll Rand (Schlage) +006C Schlage +006D Nefit +006E Manodo / KTC +006E Manodo +006F Erone +0070 Homemanageables, Inc. +0071 LS Control +0072 Interactive Electronics Systems (IES) +0073 Hawking Technologies Inc. +0073 Hawking +0074 PowerLinx +0075 NextEnergy +0076 Goggin Research +0077 INNOVUS +0078 anyCOMM Corporation +0079 Cooper Lighting +007A Merten +007B PiTech +007C Hunter Douglas +007D CoolGuard +007E Monster Cable +007F Logitech +0080 Vero Duco +0080 Duco +0081 SIEGENIA-AUBI KG +0082 Cisco Consumer Business Group +0082 ciscosystemsinc +0083 MTC Maintronic Germany +0084 FortrezZ LLC +0084 FortrezZ +0085 Fakro +0086 AEON Labs +0086 aeotec +0087 Eka Systems +0088 Airvent SAM S.p.A. +0089 Team Precision PCL +0089 teamprecisionpubliccoltd +008A BeNext +008A BeNextbv +008B Trane Corporation +008B Trane +008C Vera Control +008C veracontrolltd +008D Modstrøm +008E Raritan +008E raritancomputerinc +008F MB Turn Key Design +0090 Black & Decker +0090 kwikset +0091 Kamstrup A/S +0092 Martin Renz GmbH +0093 San Shih Electrical Enterprise Co., Ltd. +0094 Alarm.com +0095 Qees +0095 qeesaps +0096 NorthQ +0096 northqaps +0097 Wintop +0097 wintopelectric +0098 Radio Thermostat Company of America (RTC) +0098 radiothermostatcompanyofamerica +0099 GreenWave Reality Inc. +0099 GreenWave Systems +009A Home Automation Europe +009B 2gig Technologies Inc. +009C Cameo Communications Inc. +009D Coventive Technologies Inc. +009E Adventure Interactive +009F Exigent Sensors +0100 Insignia +0101 ADOX, Inc. +0102 SMK Manufacturing Inc. +0102 SMK +0103 Diehl AKO +0103 diehlcontrols +0104 Panasonic Electric Works Co., Ltd. +0105 Sumitomo +0106 Icontrol Networks +0106 iControl +0107 MegaChips +0108 D-Link +0108 dlinkcorporation +0109 Vision Security +0109 Vision +010A VDA +010B Sharp +010B sharpcorporation +010C There Corporation +010C There +010D e-Home AUTOMATION +010E Poly-control +010E polycontrolaps +010E danalock +010F Fibargroup +010F Fibaro +0110 Frostdale +0111 Airline Mechanical Co., Ltd. +0112 MITSUMI +0112 mitsumielectriccoltd +0113 Evolve +0113 evolveguestcontrols +0114 Kichler +0114 Kichler Lighting +0115 Z-Wave.Me +0116 Chromagic Technologies Corporation +0116 Chromagic +0117 Abilia +0118 TKB Home +0119 Omnima Limited +011A Wenzhou MTLC Electric Appliances Co.,Ltd. +011A enerwave +011A enerwavegreenautomation +011B Connected Object +011C TKH Group / Eminent +011C Eminent +011D Foxconn +011E Secure Wireless +011F Ingersoll Rand (was Ecolink) +0120 Zonoff +0121 Napco Security Technologies, Inc. +0121 Napco +0122 MSK - Miyakawa Seisakusho +0122 miyakawaelectricworksltd +0123 IWATSU +0124 Square Connect +0125 Motion Control Systems +0126 Alertme +0126 Iris +0127 DMP (Digital Monitoring Products) +0127 DMP +0128 Prodrive Technologies +0128 prodrivebv +0129 ASSA ABLOY +0129 yalelocksamphardware +0129 yale +012A Qolsys +012A Qolsysinc +012B Infusion Development +012C SANAV +012D Wilshine Holding Co., Ltd +012E Wuhan NWD Technology Co., Ltd. +012F Tecom Co., Ltd. +0130 Quby +0131 Zipato +0132 DynaQuip Controls +0132 DynaQuip +0133 Netgear +0134 AT&T +0135 ZyXEL +0136 Systech Corporation +0137 FollowGood Technology Company Ltd. +0137 FollowGood +0138 BRK Brands, Inc. +0138 firstalert +0139 Zhome +013A Living Style Enterprises, Ltd. +013B AstraLink +013C Philio Technology Corp +013C Philio +013D Pella +013E Holtec Electronics BV +013F Defacontrols BV +0140 Computime +0141 Innoband Technologies, Inc +0142 Rademacher Geräte-Elektronik GmbH & Co. KG +0143 myStrom +0144 Applied Micro Electronics "AME" BV +0145 Buffalo Inc. +0145 Buffalo +0146 Axesstel Inc +0147 R-import Ltd. +0148 Eurotronics +0148 eurotronictechnologygmbh +0148 stella +0149 wiDom +014A Ecolink +014A ecolinkintelligenttechnology +014B BFT S.p.A. +014C OnSite Pro +014D Enblink Co. Ltd +014D Enblink +014E Check-It Solutions Inc. +014E Check-It +014F Linear Corp +014F Linear +0150 Physical Graph Corporation +0151 Sercomm Corp +0151 Sercomm +0152 UFairy G.R. Tech +0152 ufairygr +0152 ufairygriottechcoltd +0153 Revolv Inc +0154 Popp & Co +0154 Popp +0155 Avadesign Technology Co., Ltd. +0156 Vivint +0157 EcoNet Controls +0158 GuangZhou Zeewave Information Technology Co., Ltd. +0159 Goap +0159 qubino +015A Jin Tao Bao +015B LG Electronics +015C Bosch Security Systems, Inc +015C Bosch +015D Willis Electric Co., Ltd. +015E Locstar Technology Co., Ltd +015E Locstar +015F McoHome Technology Co., Ltd +015F McoHome +0160 Essence Security +0160 essencegroup +0161 Promixis, LLC +0162 HomeScenario +0162 homescenarioinc +0163 Queenlock Ind. Co., Ltd. +0164 JSW Pacific Corporation +0165 ID-RF +0165 nodon +0166 CBCC Domotique SAS +0166 swiid +0167 SecureNet Technologies +0168 STRATTEC Security Corporation +0169 Bönig und Kallenbach oHG +016A Fantem +016B Echostar +016C Advanced Optronic Devices Co.,Ltd +016D Guangzhou Ruixiang M&E Co., Ltd +016E Nanjing Easthouse Electrical Co., Ltd. +016F Zhejiang Jiuxing Electric Co Ltd +0170 Powerhouse Dynamics +0171 WeBeHome AB +0171 WeBeHome +0172 PassivSystems Limited +0173 Leak Intelligence, LLC +0174 Kopera Development Inc. +0175 Devolo +0176 Telldus Technologies AB +0176 Telldus +0177 Domino sistemi d.o.o. +0178 Nexia Home Intelligence +0178 Nexa +0178 Nexia +0179 ConnectHome +017A Liveguard Ltd. +017B Vs-Safety AS +017C EbV +017D DRACOR Inc. +017E Telular +017F Wink Inc. +017F Wink +0180 Huapin Information Technology Co.,Ltd +0181 Holion Electronic Engineering Co., Ltd +0182 Securifi Ltd. +0182 Securifi +0183 Universe Future +0184 Dragon Tech Industrial, Ltd. +0185 Ningbo Sentek Electronics Co., Ltd +0185 Sentek +0186 Team Digital Limited +0187 LEVION Technologies Gmbh +0188 Vipa-Star +0189 Ness Corporation Pty Ltd +018A Globalchina-Tech +018B Grib +018C Dawon DNS +018D Flextronics +018E Climax Technology, Ltd. +018E Climax Technology +018F Focal Point Limited +0190 Building 36 Technologies +0190 Building 36 +0191 Swann Communications Pty Ltd +0193 Universal Devices, Inc +0193 Universal Devices +0195 M2M Solution +0196 Bellatrix Systems, Inc. +0197 RPE Ajax LLC (dbs Secur Ltd) +0198 Venstar Inc. +0198 Venstar +0199 Wireless Maingate AB +019A Sensative AB +019A Sensative +019B ThermoFloor +019B thermoflooras +019B heatit +019C Amdocs +019C Amdocs Software Systems Ltd +019D MOBILUS MOTOR Spólka z o.o. +019E iEXERGY GmbH +019F Webee Life +019F Webee +0200 Cloud Media +0201 Samsung Electronics Co., Ltd. +0201 Samsung +0202 Monoprice +0203 Newland Communication Science Technology Co., Ltd. +0204 Beijing Sino-American Boyi Software Development Co., Ltd +0205 Shanghai Longchuang Eco-energy Systems Co., Ltd +0207 Forest Group Nederland B.V +0209 UTC Fire and Security Americas Corp +020A Decoris Intelligent System Limited +020B Embedded System Design Limited +020C Dongguan Zhou Da Electronics Co.,Ltd +020D Novateqni HK Ltd +020E Domitech Products, LLC +020F Herald Datanetics Limited +0210 Light Engine Limited +0211 Shenzhen Liao Wang Tong Da Technology Ltd +0212 iRevo +0213 BMS Evler LTD +0214 Kaipule Technology Co., Ltd. +0214 shenzhenkaipuletechnologycoltd +0214 KT +0215 Shangdong Smart Life Data System Co.,Ltd +0216 RET Nanjing Intelligence System CO.,Ltd +0217 Strattec Advanced Logic,LLC +0218 iAutomade Pte Ltd +0219 Enwox Technologies s.r.o. +021A SHENZHEN AOYA INDUSTRY CO. LTD +021B ST&T Electric Corporation +021C Shenzhen iSurpass Technology Co. ,Ltd +021C iSurpass +021D Shenzhen Kaadas Intelligent Technology Co., Ltd +021E Red Bee Co. Ltd +021F Elexa Consumer Products Inc. +0221 HOSEOTELNET +0222 MCT CO., LTD +0223 DTV Research Unipessoal, Lda +0224 LifeShield, LLC +0228 DigitalZone +022A TIMEVALVE, Inc. +022A TIMEVALVE +022B GKB Security Corporation +022C Remote Solution +022D Mercury Corporation +022D Mercury +022E Samsung SDS +022F WRT Intelligent Technology CO., LTD. +0230 Alphonsus Tech +0231 ASITEQ +0232 MODACOM CO., LTD. +0233 eZEX Corporation +0235 TAEWON Lighting Co., Ltd. +0236 Bandi Comm Tech Inc. +0236 Bandi +0237 Vestel Elektronik Ticaret ve Sanayi A.S. +0238 Milanity, Inc. +0239 Stelpro +023A KUMHO ELECTRIC, INC +023B ROC-Connect, Inc. +023C SafeTech Products +023D Honest Technology Co., Ltd. +023E Shanghai Dorlink Intelligent Technologies Co.,Ltd +0240 Technicolor +0242 Winytechnology +0243 casenio AG +0244 Athom BV +0244 Athom +0245 permundo GmbH +0245 permundo +0246 CentraLite Systems, Inc +0247 EASY SAVER Co., Inc +024A BTSTAR(HK) TECHNOLOGY COMPANY LIMITED +024A BTSTAR +024B Huawei Technologies Co., Ltd. +024C Hankook Gas Kiki CO.,LTD. +024C Hank +024D Z-works Inc. +024D Z-works +024E Digital Home Systems Pty Ltd, +024F Smartly AS +024F Smartly +0250 Shenzhen Tripath Digital Audio Equipment Co.,Ltd +0251 Beijing Universal Energy Huaxia Technology Co.,Ltd +0252 North China University of Technology +0253 iungo.nl B.V. +0254 Spectrum Brands +0256 Inkel Corp. +0257 PARATECH +0258 Shenzhen Neo Electronics Co., Ltd +0258 shenzhenneoelectronics +0258 Coolcam +0259 Starkoff +025A GES +025C Hauppauge +5254 Remotec +5254 remotetechnologiesincorporated +5254 remotectechnologyltd