{"_id":"@1st-setup/cul","_rev":"4-f9fc0ab73dbf6eeccb24e2541509d3e5","name":"@1st-setup/cul","dist-tags":{"latest":"0.20.2"},"versions":{"0.18.0":{"version":"0.18.0","name":"@1st-setup/cul","description":"Module to interact with Busware CUL / culfw","homepage":"http://github.com/hobbyquaker/cul","author":{"name":"hobbyquaker","email":"hobbyquaker@gmail.com"},"engines":{"node":">=8.0.0"},"engineStrict":true,"keywords":["Smarthome","Home Automation","CUL","FS20","HomeMatic","Max","Busware","culfw","fhem"],"contributors":[{"name":"Michel Verbraak https://github.com/1stsetup"},{"name":"Bluefox https://github.com/GermanBluefox"},{"name":"ns130291 https://github.com/ns130291"},{"name":"Tim Römisch https://github.com/timroemisch"},{"name":"Ingo Fischer https://github.com/Apollon77"},{"name":"Michael Lorenz"},{"name":"mreschka https://github.com/mreschka"},{"name":"Andre Klärner https://github.com/klaernie"},{"name":"Ferdinand Helmer https://github.com/ferdinandhelmer"}],"repository":{"type":"git","url":"git+https://github.com/hobbyquaker/cul.git"},"main":"./cul.js","dependencies":{"serialport":"^9.0.0","telnet-client":"^1.4.5"},"bugs":{"url":"https://github.com/hobbyquaker/cul/issues"},"scripts":{"test":"camo-purge; xo && mocha tests/*","lintfix":"xo --fix"},"license":"GPL-2.0","devDependencies":{"camo-purge":"latest","mocha":"latest","should":"latest","xo":"latest"},"xo":{"space":4,"ignore":["lib/moritz.js","lib/fht.js"],"rules":{"prefer-destructuring":"warn","prefer-rest-params":"warn","unicorn/prefer-string-slice":"warn","unicorn/prevent-abbreviations":"warn","unicorn/no-fn-reference-in-iterator":"warn"}},"gitHead":"0445efed9a3b7152e2a8bb397231a59961ec7fcd","_id":"@1st-setup/cul@0.18.0","_nodeVersion":"16.13.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-CrJ48790HxZzwKmHPTR4DNe6JJcOCbFTsIhI69SIF9Jl2p5cAT1Hrf3scQgeU1lPCvDuSnBsAPsuh5w/zIWOkw==","shasum":"b0b34819df90ebb165bda69e36365f25538bdc1a","tarball":"https://registry.npmjs.org/@1st-setup/cul/-/cul-0.18.0.tgz","fileCount":15,"unpackedSize":79217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/rAuCRA9TVsSAnZWagAAxnoP/3TFnq5nXs3d/fekvvSg\n1+QJeAmCvzJr8f4OMeBTUBC9PK+e7E0zgNYN5D/Y0eY+Xe28NMKEFgmEwrE9\nqBpXf6oTE8Pgl/OwSsN9WbXr7+x5CB3aikTUKFH5SyM6BLfJ7/atUcm9foGQ\n2CjmypPWqQYj7CBZqXP2qd7qf5xg6bele64ekN5RJvQVLxfWdz/qxH4Ipela\nhGUIfme5t4ssiPSmmEAFLVrkaftVucPmkjRtItIukk8IbrRtYF2gJjuZE7pf\noHdfIqb76vOtslKiZ8i82afeQHYc/diUSx92XUCrXqkr1EWEI3tKuOoWlGIu\nveu3AMIIobbax+X2/xhC9XJ/vGi+jV2XA6kVeYW512XxxBqEhwTxDLEeroE7\nUSnLOUcELPCo5cv9r+ayBhayVFLpOzfKfy84JLI+pIAAgAJf2HX6DeUtjp/G\nKp+79yXVHwHQ/DM/C4KMxBZd/wmSSQsP0Bu6gARyvMsjhk4UYTw+4+tR8XNH\nxcjx9Y0PHnQO0ZnT6mLxgKs0Ff2ZUJLUvNWIUSpFBeNu3g5H/twxRdPZDMHI\nXLcFcwkl8a8G6RG86EGGY+dwRCF0HMqxFL3tDvpGARS6+IdXwKhw2uGjgHid\np2Yww3sKhy7pITFgVQNcq1zcqwAHhBgBKjqEIiqI6pWNM/Ue/gfXIbnH2hTI\nKXhy\r\n=1zMR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEU93/ja2e08mUxdQFTmrikzC2yoGjsKwUo29tU4mr/kAiAPIkhM4WuP/C+btog+SrJEyBYc8zwvYMAkUDLvq99q1w=="}]},"_npmUser":{"name":"1st-setup","email":"info@1st-setup.nl"},"directories":{},"maintainers":[{"name":"1st-setup","email":"info@1st-setup.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cul_0.18.0_1644081198640_0.48722476484708"},"_hasShrinkwrap":false},"0.20.0":{"version":"0.20.0","name":"@1st-setup/cul","description":"Module to interact with Busware CUL / culfw","homepage":"http://github.com/hobbyquaker/cul","author":{"name":"hobbyquaker","email":"hobbyquaker@gmail.com"},"engines":{"node":">=8.0.0"},"engineStrict":true,"keywords":["Smarthome","Home Automation","CUL","FS20","HomeMatic","Max","Busware","culfw","fhem"],"contributors":[{"name":"Michel Verbraak https://github.com/1stsetup"},{"name":"Bluefox https://github.com/GermanBluefox"},{"name":"ns130291 https://github.com/ns130291"},{"name":"Tim Römisch https://github.com/timroemisch"},{"name":"Ingo Fischer https://github.com/Apollon77"},{"name":"Michael Lorenz"},{"name":"mreschka https://github.com/mreschka"},{"name":"Andre Klärner https://github.com/klaernie"},{"name":"Ferdinand Helmer https://github.com/ferdinandhelmer"}],"repository":{"type":"git","url":"git+https://github.com/hobbyquaker/cul.git"},"main":"./cul.js","dependencies":{"serialport":"^9.0.0","telnet-client":"^1.4.5"},"bugs":{"url":"https://github.com/hobbyquaker/cul/issues"},"scripts":{"test":"camo-purge; xo && mocha tests/*","lintfix":"xo --fix"},"license":"GPL-2.0","devDependencies":{"camo-purge":"latest","mocha":"latest","should":"latest","xo":"latest"},"xo":{"space":4,"ignore":["lib/moritz.js","lib/fht.js"],"rules":{"prefer-destructuring":"warn","prefer-rest-params":"warn","unicorn/prefer-string-slice":"warn","unicorn/prevent-abbreviations":"warn","unicorn/no-fn-reference-in-iterator":"warn"}},"gitHead":"7833c9db1c4b9d062a128fce2a0bfddb10ab3b5e","_id":"@1st-setup/cul@0.20.0","_nodeVersion":"16.13.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ThOEE9FVMTYaxitah0YFY1FtD/oi4NanPt6UhFwTmyqONMhoypBW5EQOWd27s2mmsvX/8AM+Rl8vc07C69hYcA==","shasum":"745909056b8240ce393675f60ddbed190d97c48b","tarball":"https://registry.npmjs.org/@1st-setup/cul/-/cul-0.20.0.tgz","fileCount":15,"unpackedSize":79430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/5jtCRA9TVsSAnZWagAAOVAP/1FEnc0flGlFeC7Au8xA\n+ojnb8KLVutgZn1dPR0v3VLGSX+6SkGWsTRgCmUoe8V6x5/4ON/OXWjidKBQ\npmP/sNCclof818/nsaJEX6bq1NvapX/VAaawzm9xEl/QhG4j5U2obTRiYzHj\nhjFEDnIfngw2SIxn8nE3dHAMbJvWKrSC7MMWCFs4ce1HTn/NiqDMCZsNh7oA\niwGUx5jP7WvfbD3jT6edzUvBt0/bZcwysUmZSxTPgLCj2vlKKiPEqAYbzlJT\n/LNdWgoDCJLzYXPrSvcxCnVtsUJeI1OkBNz+CNnvdbHxDodAUBFgDPlUpzqK\nfRjezh2tq5NhvnmY6QcaW9LaE7FeCTPJ2GGehVhSb1kndJvL82De0EMdQBB6\nBGMhg01BWA8kgUF9FMaKXv1LA+2QBxtzE5P/kZjvolvKXvv2MJhewBH3irJw\nQD9LSiHlDldG0SMP6GaggF+GrFE3Q0lTzEuH/UTnUIZEmvO9QVuWq8XptgQP\nQ25+r9ajTZC3t+f//8qYjkp6SDjkjyIw7MbgBB+Cf8PhP4g6yaRD8+3K/cIH\nrgWnptrnaF1hTWwQJFUtlTle0r4tknS0N5bIu+N9bBuy/ZYBETieeYtqv4Ob\nZKS+jsSV3pBF1atB/hMS1aEbCYn2LKnHP7tLwPaeaQUjImPEAodxpcka7oQ6\n0Lx9\r\n=cFk1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5h+e/E30hFwaUYUxiir2fMYgh8OpzX20ik5FRXgpi8AiEAzDDwpjrkAn+fCupBjfAxF8dQcKgIBqYrNer6vVr4ZEU="}]},"_npmUser":{"name":"1st-setup","email":"info@1st-setup.nl"},"directories":{},"maintainers":[{"name":"1st-setup","email":"info@1st-setup.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cul_0.20.0_1644140781176_0.12383226581742335"},"_hasShrinkwrap":false},"0.20.1":{"version":"0.20.1","name":"@1st-setup/cul","description":"Module to interact with Busware CUL / culfw","homepage":"http://github.com/hobbyquaker/cul","author":{"name":"hobbyquaker","email":"hobbyquaker@gmail.com"},"engines":{"node":">=8.0.0"},"engineStrict":true,"keywords":["Smarthome","Home Automation","CUL","FS20","HomeMatic","Max","Busware","culfw","fhem"],"contributors":[{"name":"Michel Verbraak https://github.com/1stsetup"},{"name":"Bluefox https://github.com/GermanBluefox"},{"name":"ns130291 https://github.com/ns130291"},{"name":"Tim Römisch https://github.com/timroemisch"},{"name":"Ingo Fischer https://github.com/Apollon77"},{"name":"Michael Lorenz"},{"name":"mreschka https://github.com/mreschka"},{"name":"Andre Klärner https://github.com/klaernie"},{"name":"Ferdinand Helmer https://github.com/ferdinandhelmer"}],"repository":{"type":"git","url":"git+https://github.com/hobbyquaker/cul.git"},"main":"./cul.js","dependencies":{"serialport":"^9.0.0","telnet-client":"^1.4.5"},"bugs":{"url":"https://github.com/hobbyquaker/cul/issues"},"scripts":{"test":"camo-purge; xo && mocha tests/*","lintfix":"xo --fix"},"license":"GPL-2.0","devDependencies":{"camo-purge":"latest","mocha":"latest","should":"latest","xo":"latest"},"xo":{"space":4,"ignore":["lib/moritz.js","lib/fht.js"],"rules":{"prefer-destructuring":"warn","prefer-rest-params":"warn","unicorn/prefer-string-slice":"warn","unicorn/prevent-abbreviations":"warn","unicorn/no-fn-reference-in-iterator":"warn"}},"gitHead":"5e7d18441b061798e04889619ab6e2f6dfb9e277","_id":"@1st-setup/cul@0.20.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-TqUHVg4MXuwJffmAnVAhfYRw/vIRvqBxOL199u1itvP1UJSV2qVdMkse6Uh/t/bfwnPgdpZ6tj7alRyjUeucew==","shasum":"424f6c17da5ca19ea871b0712a911d210a79e7de","tarball":"https://registry.npmjs.org/@1st-setup/cul/-/cul-0.20.1.tgz","fileCount":15,"unpackedSize":79652,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBffnk2UunajI2g2t2iJpVilK9G2kzuMJ9MXA6tajxBgIgD7TCFrbNdQK5OsAx+zYZoHaA6sAKuxaMooW3LnbJ0vM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjANujACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqOTQ//Wfgn1w6J8BaQU93eDIfh8c+hi+uZnbPcNzwtz210D6bxW/uZ\r\nfXHgZr3u8Nc2gXLcLkCUOrQ5tNhWDJXfbZZbsRs5afq0phieqRTiTI5hWY/k\r\nGqfZUcAxNnVSnFPdd5T9Pf1hSwk/UNv6onB+sDLudukwAFvFtAc5s7d1Igez\r\n8G+pKza7Xj2yxIAX5s4LXnfxkISnofaWVjbdwFjqre2wdMcx1KiRUaz+3Crn\r\nQPQJfJlsPZqyIxooWo8tAbF8UbNdRgCQs7FoSt1rkBHoKmXDzDzS7APakpcQ\r\ndY8M0vcVpmr4vaxvmc1tw3HC6mm5DS+nQ8xEH0Lx9RuMWbH1ZeXWA+5gwZ7t\r\nyPxq+8RQGlK6auGc10D/KDYVN7YhY+oMzN5VWc3nUSfN7flocTBp0e7EpEbB\r\nMu8MA6s/R3oqHaSk3upOucK+n6T0ufoD6tPwO95F9owt81GLvpsKddRQuA7a\r\nBrEpUux7jvv/X0+6eO93pn+yWr85RJWod5NyXw04kDI34u3eRT9su2r3/RxN\r\nPulRTbLo6eVFROQ4jC2siOHvQgPQOcx/Gh8ybhpQTiKA0qSo2BrvP9oGU/1L\r\nwsN9o+Sjec1ricuS3YJ0Rx92csrB5NSUjyWHVvO1j2CBK4Qkd0YEx18tV+XT\r\nI2VQ/edVTNK1RBfzf3hHhrHZzsl8cNX5bjQ=\r\n=Xi+9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"1st-setup","email":"info@1st-setup.nl"},"directories":{},"maintainers":[{"name":"1st-setup","email":"info@1st-setup.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cul_0.20.1_1661000611499_0.2287057929115497"},"_hasShrinkwrap":false},"0.20.2":{"version":"0.20.2","name":"@1st-setup/cul","description":"Module to interact with Busware CUL / culfw","homepage":"http://github.com/hobbyquaker/cul","author":{"name":"hobbyquaker","email":"hobbyquaker@gmail.com"},"engines":{"node":">=8.0.0"},"engineStrict":true,"keywords":["Smarthome","Home Automation","CUL","FS20","HomeMatic","Max","Busware","culfw","fhem"],"contributors":[{"name":"Michel Verbraak https://github.com/1stsetup"},{"name":"Bluefox https://github.com/GermanBluefox"},{"name":"ns130291 https://github.com/ns130291"},{"name":"Tim Römisch https://github.com/timroemisch"},{"name":"Ingo Fischer https://github.com/Apollon77"},{"name":"Michael Lorenz"},{"name":"mreschka https://github.com/mreschka"},{"name":"Andre Klärner https://github.com/klaernie"},{"name":"Ferdinand Helmer https://github.com/ferdinandhelmer"}],"repository":{"type":"git","url":"git+https://github.com/hobbyquaker/cul.git"},"main":"./cul.js","dependencies":{"serialport":"^9.0.0","telnet-client":"^1.4.5"},"bugs":{"url":"https://github.com/hobbyquaker/cul/issues"},"scripts":{"test":"camo-purge; xo && mocha tests/*","lintfix":"xo --fix"},"license":"GPL-2.0","devDependencies":{"camo-purge":"latest","mocha":"latest","should":"latest","xo":"latest"},"xo":{"space":4,"ignore":["lib/moritz.js","lib/fht.js"],"rules":{"prefer-destructuring":"warn","prefer-rest-params":"warn","unicorn/prefer-string-slice":"warn","unicorn/prevent-abbreviations":"warn","unicorn/no-fn-reference-in-iterator":"warn"}},"gitHead":"7ce1a0c35204f0db6216d7676a183399d4431706","_id":"@1st-setup/cul@0.20.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-gfv6Pd0T47sHYB4vLQBOFlVh0Y+7WjgHOc2MgH207nCSi4aaXfy+s11uPO6uSiyK57BlJy5+zqeDCYDyGpw1bw==","shasum":"be8498084a50ad0c4ac0d8f0d1476e67f1516752","tarball":"https://registry.npmjs.org/@1st-setup/cul/-/cul-0.20.2.tgz","fileCount":15,"unpackedSize":79691,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSp7SCevDOT+Olx17yDcs+cr56i1YSrRJV2Vu2nKaWZAiBeJqcEfF/UqsU/1lWRHIdeSqeJs/L8F1FGnmTNu7OMHA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjAOqhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorNA/9HqesxPKEtFZrdc9bO8VUj48HQKZr+evli3NVdMnzl/5g/Fzs\r\n5hpJ222+/pSAnfjd1xISziL/2LITI4h8o/T+BJ9cXk6VFZYSnSQ7gOKfB4zi\r\nSVFhNpZ9HqdZlDvE26/nO7zX2bABQhybNNziB3wGtkPdPl6N3N01Ph2gRBvL\r\nuM6YC3zEPXd1lvU/DZWsDNt37ZZPA1EY8IBBVJOu6UhAWPeRkfZfFEWP1ay9\r\nCJ/RubGbh4EPCOTzAeBoFxkSLmUUcV2RsxVus8coNHDA1sXS8EWLRveaME28\r\n1H5dck/mWQReN5ONIhdpI2wEOrU+dWZ9AQXtKBE6D0OgaSsBm0zrHv00uM1g\r\nCusuxPGUk9oC6XgC47lZG0+Pv3BJj8b06CA3XEXvGqxv+Zu96Yzm7fq4iyjz\r\nys3Cph2jbb8nmGTbuWEKvfJqeBpnbE82ihOQYKxWLCgFmDSZYdkXCmid3d3e\r\nlkS6nxctcobvpwRBzHR9BdS0yukF16HeFwDcYXR+IRQzefHjVUp9+i7plx3J\r\n7I2Jl74gfirbUFA1DXh6VecB10Y+muL9+SH9X/jOhImI8yGsXpYLjoRXAH6c\r\nIxThpqO7nRjhPBTUeta3NaU62nZosNx70A4pEpjrrUPnmsyS9Ht+t43VCBBY\r\nOKeoVKBwIC3XQeoKQSYU1R0hRu7GWX0+fOQ=\r\n=rfeQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"1st-setup","email":"info@1st-setup.nl"},"directories":{},"maintainers":[{"name":"1st-setup","email":"info@1st-setup.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cul_0.20.2_1661004449368_0.22478718903159756"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-05T17:13:18.571Z","0.18.0":"2022-02-05T17:13:18.825Z","modified":"2022-08-20T14:07:29.599Z","0.20.0":"2022-02-06T09:46:21.301Z","0.20.1":"2022-08-20T13:03:31.736Z","0.20.2":"2022-08-20T14:07:29.522Z"},"maintainers":[{"name":"1st-setup","email":"info@1st-setup.nl"}],"description":"Module to interact with Busware CUL / culfw","homepage":"http://github.com/hobbyquaker/cul","keywords":["Smarthome","Home Automation","CUL","FS20","HomeMatic","Max","Busware","culfw","fhem"],"repository":{"type":"git","url":"git+https://github.com/hobbyquaker/cul.git"},"contributors":[{"name":"Michel Verbraak https://github.com/1stsetup"},{"name":"Bluefox https://github.com/GermanBluefox"},{"name":"ns130291 https://github.com/ns130291"},{"name":"Tim Römisch https://github.com/timroemisch"},{"name":"Ingo Fischer https://github.com/Apollon77"},{"name":"Michael Lorenz"},{"name":"mreschka https://github.com/mreschka"},{"name":"Andre Klärner https://github.com/klaernie"},{"name":"Ferdinand Helmer https://github.com/ferdinandhelmer"}],"author":{"name":"hobbyquaker","email":"hobbyquaker@gmail.com"},"bugs":{"url":"https://github.com/hobbyquaker/cul/issues"},"license":"GPL-2.0","readme":"# cul\n\n[![NPM version](https://badge.fury.io/js/cul.svg)](http://badge.fury.io/js/cul)\n[![dependencies Status](https://david-dm.org/hobbyquaker/cul/status.svg)](https://david-dm.org/hobbyquaker/cul)\n[![Build Status](https://travis-ci.org/hobbyquaker/cul.svg?branch=master)](https://travis-ci.org/hobbyquaker/cul)\n[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)\n[![License][gpl-badge]][gpl-url]\n\nThis is a [Node.js](http://nodejs.org) module that can be used to interact with a\n[Busware CUL (USB)](http://busware.de/tiki-index.php?page=CUL),\n[COC (RaspberryPi)](http://busware.de/tiki-index.php?page=COC),\n[SCC (RaspberryPi)](http://busware.de/tiki-index.php?page=SCC) or [CUNO](http://busware.de/tiki-index.php?page=CUNO) running [culfw](http://culfw.de). With CUL/COC/SCC/CUNO and\nculfw many RF devices can be controlled, like [FS20](http://www.elv.de/fs20-funkschaltsystem.html),\n[MAX!](http://www.elv.de/max-imale-kontrolle.html), temperature sensors, weather stations and more.\nSee the [full list of supported Devices](http://culfw.de/culfw.html#Features).\n\n#### Purpose\n\nThis module provides a thin abstraction for the serial port or telnet communication with CUL/COC/SCC/CUNO/CUNO2 and lightweight parse and\ncommand wrappers. It's intended to be used in different Node.js based Home Automation software.\n\n#### Credits\n\nbased on the work of Rudolf Koenig, Author of [culfw](http://culfw.de) and [fhem](http://fhem.de) (both licensed under\nGPLv2)\n\n\n## Usage\n\n```npm install cul```\n\n```javascript\nvar Cul = require('cul');\nvar cul = new Cul();\n\n// ready event is emitted after serial connection is established and culfw acknowledged data reporting\ncul.on('ready', function () {\n    // send arbitrary commands to culfw\n    cul.write('V');\n});\n\ncul.on('data', function (raw) {\n    // show raw incoming messages\n    console.log(raw);\n});\n\n```\n\n## Options\n\n* **connectionMode** (default: ```\"serial\"```)\n    possible values:\n    * ```serial``` (CUL/COC/SCC)\n    * ```telnet``` (CUNO/CUNO2)    \n* **serialport** (default: ```\"/dev/ttyAMA0\"```)\n* **baudrate** (default: ```9600```)\n* **mode** (default: ```\"SlowRF\"```)    \n    possible values:\n    * ```SlowRF``` (FS20, HMS, FHT, EM, ...)\n    * ```MORITZ``` (MAX! devices)\n    * ```AskSin``` (HomeMatic devices)\n* **parse** (default: ```true```)    \n    try to parse received messages\n* **init** (default: ```true```)    \n    auto send \"enable datareporting\" command when connection is established (depends on chosen mode)\n* **coc** (default: ```false```)    \n    has to be enabled for usage with [COC](http://busware.de/tiki-index.php?page=COC)), changes default baudrate to 38400 and default serialport to /dev/ttyACM0\n* **scc** (default: ```false```)    \n    has to be enabled for usage with [SCC](http://busware.de/tiki-index.php?page=SCC)), changes default baudrate to 38400 and default serialport to /dev/ttyAMA0\n* **rssi** (default: ```true```)  \n    receive rssi (signal strength) value with every message (works only if init and parse are both true)\n* **debug** (default: ```false```)  \n    log every command which is send in the console\n* **repeat** (default: ```false```)  \n    disable repeat message filtering in culfw, that means report each of the (repeated) packets of a message\n* **host** (no default value)  \n    the IP-Address of CUNO (has to be set when using telnet mode)\n* **port** (default: ```2323```)  \n    the port of the telnet server\n* **networkTimeout** (default: ```true```)  \n    enabling sending keep alive signals to the telnet server\n\npass options when creating a new cul object:\n```javascript\nvar Cul = require('cul');\nvar fs20 = new Cul({\n    serialport: '/dev/ttyACM0',\n    mode: 'SlowRF'\n});\nvar max = new Cul({\n    serialport: '/dev/ttyACM1',\n    mode: 'MORITZ'\n});\n```\n\n## Methods\n\n\n* **close( )**    \nclose the serialport connection\n* **write(raw, callback)**    \nsend message to cul. writes directly to the serialport    \noptional callback is passed through to serialport module and is called with params (err, res)\n* **cmd(protocol, arg1, arg2, ..., callback)**    \ngenerate a command and send it to cul (see chapter \"predefined commands\" below)    \noptional callback is passed through to serialport module and is called with params (err, res)\n\n\n## Events\n\n* **ready**    \ncalled when serialport connection is established and (if init is true) datareporting is enabled\n* **close**    \ncalled when serialport connection is closed\n* **data(raw, obj)**    \ncalled for every received message\n  * **raw** string, contains the raw message received from cul\n  * **obj** object, contains parsed message data (see \"data parsing\" below)\n* **error(exception)**    \ncalled when serialport or tcp connection is returning an error\n\n## Sending commands\n\n### Raw commands\n\nExample\n```javascript\ncul.write('F6C480111'); // Raw command\n```\n### Predefined commands\n\n(until now only FS20 and FHT is implemented)\n\n#### FS20\n\nTake a look at the file lib/fs20.js - it exports a function cmd(housecode, address, command, time, bidi, res)\n\nexample\n```javascript\ncul.cmd('FS20', '2341 2131', '1112', 'on'); // house code in ELV-Notation, address in ELV-Notation, command as text\ncul.cmd('FS20', '6C48', '01', '11');        // house code as hex string, address as hex string, command as hex string\n```\n(these examples result in the same message as the raw command example above.)\n\n\n## Data parsing\n\nThe 2nd param ```obj``` of the data event contains a object representation of the parsed data.\n\nEach object has the following attributes:\n\n* **protocol**    \nFS20, EM, HMS, WS, MORITZ, ...\n* **address**    \na unique address in this protocol\n* **device**  \ndevice type name\n* **rssi**    \nradio signal strength value (only present if option rssi is true)\n* **data**    \na object with the parsed data\n\n\n### Examples\n\nSample output of\n```javascript\ncul.on('data', function (raw, obj) {\n    console.log(raw, obj);\n});\n```\n\n#### FS20\n```\nF6C480011E5, {\n    protocol: 'FS20',\n    address: '6C4800',\n    device: 'FS20',\n    rssi: -87.5,\n    data: {\n        addressCode: '6C48',\n        addressCodeElv: '2341 2131',\n        addressDevice: '00',\n        addressDeviceElv: '1111',\n        extended: false,\n        time: null,\n        bidirectional: false,\n        response: false,\n        cmdRaw: '11',\n        cmd: 'on'\n\n    }\n}\n```\n\n#### EM1000\n```\nE020563037A01000200EC, {\n    protocol: 'EM',\n    address: '0205',\n    device: 'EM1000-EM',\n    rssi: -84,\n    data: { seq: 99, total: 31235, current: 1, peak: 2 }\n}\n```\n\n#### S300TH\n```\nK1145525828, {\n    protocol: 'WS',\n    address: 1,\n    device: 'S300TH',\n    rssi: -28,\n    data: { temperature: 24.5, humidity: 58.5 },\n}\n```\n\n#### Moritz (MAX!)\n```\nV 1.66 CSM868 { data: { culfw: { version: '1.66', hardware: 'CSM868' } },\n  protocol: 'MORITZ',\n  rssi: -22 }\nZ0C000442113AD30C4F0D001CB41D { data:\n   { len: 12,\n     msgcnt: 0,\n     msgFlag: '04',\n     msgTypeRaw: '42',\n     msgType: 'WallThermostatControl',\n     src: '113ad3',\n     dst: '0c4f0d',\n     groupid: 0,\n     payload: '1CB41D',\n     desiredTemperature: 14,\n     measuredTemperature: 18 },\n  protocol: 'MORITZ',\n  address: '113ad3',\n  device: 'WallMountedThermostat',\n  rssi: -59.5 }\nZ0E0002020C4F0D113AD3000119001C1E { data:\n   { len: 14,\n     msgcnt: 0,\n     msgFlag: '02',\n     msgTypeRaw: '02',\n     msgType: 'Ack',\n     src: '0c4f0d',\n     dst: '113ad3',\n     groupid: 0,\n     payload: '0119001C1E',\n     dstDevice: 'WallMountedThermostat' },\n  protocol: 'MORITZ',\n  address: '0c4f0d',\n  rssi: -59 }\n  Z0B4F06300E3F3C1234560012F7 { data:\n   { len: 11,\n     msgcnt: 79,\n     msgFlag: '06',\n     msgTypeRaw: '30',\n     msgType: 'ShutterContactState',\n     src: '0e3f3c',\n     dst: '123456',\n     groupid: 0,\n     payload: '12F7',\n     isopen: 1,\n     unkbits: 4,\n     rferror: 0,\n     batterlow: 0,\n     battery: 'ok' },\n  protocol: 'MORITZ',\n  address: '0e3f3c',\n  device: 'ShutterContact',\n  rssi: -78.5 }\n```\n\n#### FHT\n```\nT4C5300AA00E3 { protocol: 'FHT',\n  address: '4c53',\n  data:\n   { cmdRaw: '00',\n     addressCode: 7683,\n     cmd: 'actuator',\n     valueRaw: '00' },\n  rssi: -88.5 }\nT4D3F286924E2 { protocol: 'FHT',\n  address: '4d3f',\n  data:\n   { cmdRaw: '28',\n     addressCode: 7763,\n     cmd: 'sat-from1',\n     valueRaw: '24',\n     value: '6:00' },\n  rssi: -89 }\n```\n\nUntil now for these devices data parsing and/or a command wrapper is implemented:\n\n| protocol \t|         device        \t| should work \t| tested \t|\n|:---------\t|:----------------------\t|:-----------:\t|:------:\t|\n| FS20     \t| all Devices              \t| :white_check_mark: | :white_check_mark:   |\n| HMS      \t| HMS100T               \t| :white_check_mark: | :white_check_mark:   |\n| HMS      \t| HMS100TF              \t| :white_check_mark: |        \t            |\n| EM       \t| EM1000(-EM, -GZ, -WZ) \t| :white_check_mark: | :white_check_mark:   |\n| WS       \t| S300TH                \t| :white_check_mark: | :white_check_mark:   |\n| MORITZ   \t| HeatingThermostat         | :white_check_mark: |                      |\n| MORITZ   \t| WallMountedThermostat     | :white_check_mark: |                      |\n| MORITZ   \t| ShutterContact            | :white_check_mark: | :white_check_mark:   |\n| MORITZ   \t| PushButton                | :white_check_mark: |                      |\n| Uniroll  \t| All Devices               | :white_check_mark: |                      |\n| FHT  \t    | FHT80b                    | :white_check_mark: | :white_check_mark:   |\n| ESA  \t    | ESA1000                   | :white_check_mark: | :white_check_mark:   |\n| ESA  \t    | ESA2000                   | :white_check_mark: | :white_check_mark:   |\n\nMore can be added easily: take a look at the files in the directory lib/ and find your inspiration on\nhttps://svn.fhem.de/fhem/trunk/fhem/FHEM/\n\nPull requests welcome!\n\n\n## further reading\n\n* [culfw command reference](http://culfw.de/commandref.html)\n\n\n## Todo\n\n* configurable serialport auto reconnect\n* more data parser modules\n  * MORITZ (MAX!) (inprogress)\n  * ESA\n  * HMS: HMS100WD, RM100-2, HMS100TFK, HMS100MG, HMS100CO, HMS100FIT\n  * ...\n* more command modules\n  * MORITZ (inprogress)\n  * ...\n* more tests\n\nPull requests welcome! :smile:\n\n## Credits\n\n* http://culfw.de\n* http://fhem.de\n* https://github.com/voodootikigod/node-serialport\n* https://github.com/netAction/CUL_FS20\n* https://github.com/katanapod/COC_FS20\n\n## License\n\n[Licensed under GPLv2](LICENSE)\n\nCopyright (c) 2014-2020 Sebastian Raff <hobbyquaker@gmail.com> and Contributors\n\n[gpl-badge]: https://img.shields.io/badge/License-GPL-blue.svg?style=flat\n[gpl-url]: LICENSE\n","readmeFilename":"README.md"}