mirror of https://github.com/IoTcat/sola.git
Compare commits
No commits in common. 'c842b1f5d1eeeb552685315fc057b257bd40e6fd' and '3704516d0d1e5a25f3067ce34778280486bd7d2c' have entirely different histories.
c842b1f5d1
...
3704516d0d
11 changed files with 0 additions and 748 deletions
@ -1,2 +0,0 @@ |
|||||||
node_modules |
|
||||||
npm-debug.log |
|
@ -1,130 +0,0 @@ |
|||||||
# Logs |
|
||||||
logs |
|
||||||
*.log |
|
||||||
npm-debug.log* |
|
||||||
yarn-debug.log* |
|
||||||
yarn-error.log* |
|
||||||
lerna-debug.log* |
|
||||||
.pnpm-debug.log* |
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html) |
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
|
||||||
|
|
||||||
# Runtime data |
|
||||||
pids |
|
||||||
*.pid |
|
||||||
*.seed |
|
||||||
*.pid.lock |
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover |
|
||||||
lib-cov |
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul |
|
||||||
coverage |
|
||||||
*.lcov |
|
||||||
|
|
||||||
# nyc test coverage |
|
||||||
.nyc_output |
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
|
||||||
.grunt |
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/) |
|
||||||
bower_components |
|
||||||
|
|
||||||
# node-waf configuration |
|
||||||
.lock-wscript |
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html) |
|
||||||
build/Release |
|
||||||
|
|
||||||
# Dependency directories |
|
||||||
node_modules/ |
|
||||||
jspm_packages/ |
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/) |
|
||||||
web_modules/ |
|
||||||
|
|
||||||
# TypeScript cache |
|
||||||
*.tsbuildinfo |
|
||||||
|
|
||||||
# Optional npm cache directory |
|
||||||
.npm |
|
||||||
|
|
||||||
# Optional eslint cache |
|
||||||
.eslintcache |
|
||||||
|
|
||||||
# Optional stylelint cache |
|
||||||
.stylelintcache |
|
||||||
|
|
||||||
# Microbundle cache |
|
||||||
.rpt2_cache/ |
|
||||||
.rts2_cache_cjs/ |
|
||||||
.rts2_cache_es/ |
|
||||||
.rts2_cache_umd/ |
|
||||||
|
|
||||||
# Optional REPL history |
|
||||||
.node_repl_history |
|
||||||
|
|
||||||
# Output of 'npm pack' |
|
||||||
*.tgz |
|
||||||
|
|
||||||
# Yarn Integrity file |
|
||||||
.yarn-integrity |
|
||||||
|
|
||||||
# dotenv environment variable files |
|
||||||
.env |
|
||||||
.env.development.local |
|
||||||
.env.test.local |
|
||||||
.env.production.local |
|
||||||
.env.local |
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/) |
|
||||||
.cache |
|
||||||
.parcel-cache |
|
||||||
|
|
||||||
# Next.js build output |
|
||||||
.next |
|
||||||
out |
|
||||||
|
|
||||||
# Nuxt.js build / generate output |
|
||||||
.nuxt |
|
||||||
dist |
|
||||||
|
|
||||||
# Gatsby files |
|
||||||
.cache/ |
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js |
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support |
|
||||||
# public |
|
||||||
|
|
||||||
# vuepress build output |
|
||||||
.vuepress/dist |
|
||||||
|
|
||||||
# vuepress v2.x temp and cache directory |
|
||||||
.temp |
|
||||||
.cache |
|
||||||
|
|
||||||
# Docusaurus cache and generated files |
|
||||||
.docusaurus |
|
||||||
|
|
||||||
# Serverless directories |
|
||||||
.serverless/ |
|
||||||
|
|
||||||
# FuseBox cache |
|
||||||
.fusebox/ |
|
||||||
|
|
||||||
# DynamoDB Local files |
|
||||||
.dynamodb/ |
|
||||||
|
|
||||||
# TernJS port file |
|
||||||
.tern-port |
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions |
|
||||||
.vscode-test |
|
||||||
|
|
||||||
# yarn v2 |
|
||||||
.yarn/cache |
|
||||||
.yarn/unplugged |
|
||||||
.yarn/build-state.yml |
|
||||||
.yarn/install-state.gz |
|
||||||
.pnp.* |
|
@ -1,18 +0,0 @@ |
|||||||
FROM node:18 |
|
||||||
|
|
||||||
# Create app directory |
|
||||||
WORKDIR /usr/src/app |
|
||||||
|
|
||||||
# Install app dependencies |
|
||||||
# A wildcard is used to ensure both package.json AND package-lock.json are copied |
|
||||||
# where available (npm@5+) |
|
||||||
COPY package*.json ./ |
|
||||||
|
|
||||||
RUN npm install |
|
||||||
# If you are building your code for production |
|
||||||
# RUN npm ci --only=production |
|
||||||
|
|
||||||
# Bundle app source |
|
||||||
COPY . . |
|
||||||
|
|
||||||
CMD [ "node", "index.js" ] |
|
@ -1,51 +0,0 @@ |
|||||||
module.exports = { |
|
||||||
WARN_TIMES: 15, |
|
||||||
MQTT_SERVER: 'mqtt://192.168.3.6', |
|
||||||
ZONES: { |
|
||||||
liv: { |
|
||||||
in: { |
|
||||||
th: 60, |
|
||||||
n: 10, |
|
||||||
lock: 90, |
|
||||||
th_short: 40, |
|
||||||
n_short: 1, |
|
||||||
lock_short: 90 |
|
||||||
}, |
|
||||||
out: { |
|
||||||
th: 8, |
|
||||||
n: 5 * 60 |
|
||||||
}, |
|
||||||
frozen: 5 * 60 * 60 |
|
||||||
}, |
|
||||||
din: { |
|
||||||
in: { |
|
||||||
th: 60, |
|
||||||
n: 10, |
|
||||||
lock: 90, |
|
||||||
th_short: 40, |
|
||||||
n_short: 1, |
|
||||||
lock_short: 90 |
|
||||||
}, |
|
||||||
out: { |
|
||||||
th: 8, |
|
||||||
n: 3 * 60 |
|
||||||
}, |
|
||||||
frozen: 5 * 60 * 60 |
|
||||||
}, |
|
||||||
hall: { |
|
||||||
in: { |
|
||||||
th: 50, |
|
||||||
n: 2, |
|
||||||
lock: 180, |
|
||||||
th_short: 10, |
|
||||||
n_short: 1, |
|
||||||
lock_short: 30 //0
|
|
||||||
}, |
|
||||||
out: { |
|
||||||
th: 6, |
|
||||||
n: 3 * 60 |
|
||||||
}, |
|
||||||
frozen: 60 * 60 |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,56 +0,0 @@ |
|||||||
// import configures
|
|
||||||
Object.keys(require('./config.js')).forEach(i=>global[i]=require('./config.js')[i]); |
|
||||||
|
|
||||||
// load modules
|
|
||||||
const mqtt = require('mqtt'); |
|
||||||
|
|
||||||
// add modules
|
|
||||||
const log = function(){ |
|
||||||
console.log(new Date().toLocaleString('zh-CN') , ...arguments); |
|
||||||
} |
|
||||||
|
|
||||||
// instances init
|
|
||||||
const client = mqtt.connect(MQTT_SERVER); |
|
||||||
|
|
||||||
// global vars / flags
|
|
||||||
const FLAG = {}; |
|
||||||
FLAG.lock = false; |
|
||||||
|
|
||||||
// MQTT init
|
|
||||||
client.on('connect', function(){ |
|
||||||
client.subscribe('/mode/night'); |
|
||||||
client.subscribe('/mode/ai'); |
|
||||||
Object.keys(ZONES).forEach(zone=>client.subscribe('/ai/'+zone+'/light')); |
|
||||||
Object.keys(ZONES).forEach(zone=>client.subscribe('/hass/'+zone+'/snsr/light')); |
|
||||||
Object.keys(ZONES).forEach(zone=>client.subscribe('/hass/'+zone+'/snsr/swi')); |
|
||||||
client.subscribe('/ai/bath/enforced_valve'); |
|
||||||
client.subscribe('/hass/bath/snsr/valve'); |
|
||||||
}); |
|
||||||
|
|
||||||
//Load light
|
|
||||||
const refresh = require('./src/light.js')({ |
|
||||||
ZONES: ZONES, |
|
||||||
client: client, |
|
||||||
FLAG: FLAG, |
|
||||||
log: log |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
//Load enforced-valve
|
|
||||||
require('./src/enforced-valve.js')({ |
|
||||||
ZONES: ZONES, |
|
||||||
client: client, |
|
||||||
FLAG: FLAG, |
|
||||||
WARN_TIMES: WARN_TIMES, |
|
||||||
refresh: refresh, |
|
||||||
log: log |
|
||||||
}); |
|
||||||
|
|
||||||
//Load mode ctl
|
|
||||||
require('./src/mode-ctl.js')({ |
|
||||||
ZONES: ZONES, |
|
||||||
client: client, |
|
||||||
FLAG: FLAG, |
|
||||||
refresh: refresh, |
|
||||||
log: log |
|
||||||
}); |
|
@ -1,12 +0,0 @@ |
|||||||
{ |
|
||||||
"name": "hai", |
|
||||||
"version": "1.0.0", |
|
||||||
"description": "AI system for SOLA.", |
|
||||||
"main": "index.js", |
|
||||||
"repository": "https://github.com/IoTcat/sola/tree/master/src/hai", |
|
||||||
"author": "IoTcat", |
|
||||||
"license": "MIT", |
|
||||||
"dependencies": { |
|
||||||
"mqtt": "^4.3.7" |
|
||||||
} |
|
||||||
} |
|
@ -1,37 +0,0 @@ |
|||||||
module.exports = function(G){ |
|
||||||
Object.keys(G).forEach(i=>global[i]=G[i]); |
|
||||||
let state_valve = undefined; |
|
||||||
let timer_valve = undefined; |
|
||||||
let tmr_warning = undefined; |
|
||||||
client.on('message', function(topic, message){ |
|
||||||
if(topic === '/hass/bath/snsr/valve'){ |
|
||||||
state_valve = parseInt(message); |
|
||||||
return; |
|
||||||
} |
|
||||||
if(topic !== '/ai/bath/enforced_valve')return; |
|
||||||
state_valve = undefined; |
|
||||||
client.publish('/hass/bath/ctl/valve', message, {qos: 1, retain: true}); |
|
||||||
clearTimeout(timer_valve); |
|
||||||
timer_valve = setTimeout(()=>{ |
|
||||||
if(state_valve !== parseInt(message)){ |
|
||||||
let cnt = WARN_TIMES*2; |
|
||||||
FLAG.lock = true; |
|
||||||
clearInterval(tmr_warning); |
|
||||||
tmr_warning = setInterval(()=>{ |
|
||||||
Object.keys(ZONES).forEach(zone=>client.publish('/hass/'+zone+'/ctl/light', String(cnt%2))); |
|
||||||
cnt--; |
|
||||||
log('Valve', 'Warning', 'CNT Left:', cnt); |
|
||||||
if(cnt === -1){ |
|
||||||
clearInterval(tmr_warning); |
|
||||||
FLAG.lock = false; |
|
||||||
refresh.forEach(f=>f()); |
|
||||||
} |
|
||||||
}, 3000); |
|
||||||
}else{ |
|
||||||
log('Valve', 'Confirmed', parseInt(message)); |
|
||||||
} |
|
||||||
}, 5000); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
} |
|
@ -1,84 +0,0 @@ |
|||||||
module.exports = function(G){ |
|
||||||
Object.keys(G).forEach(i=>global[i]=G[i]); |
|
||||||
|
|
||||||
const radar = require('./radar.js'); |
|
||||||
|
|
||||||
|
|
||||||
const operator = function(n){ |
|
||||||
let history = new Array(n).fill(3); |
|
||||||
return function(v){ |
|
||||||
history.shift(); |
|
||||||
history.push(v); |
|
||||||
return history.reduce((a, b) => a + b, 0) / history.length; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
return Object.keys(ZONES).map(function(zone){ |
|
||||||
let cache = 0; |
|
||||||
let op_in = operator(ZONES[zone].in.n); |
|
||||||
let op_in_short = operator(ZONES[zone].in.hasOwnProperty('n_short')?ZONES[zone].in.n_short:1); |
|
||||||
let op_out = operator(ZONES[zone].out.n); |
|
||||||
let state = 0; |
|
||||||
let state_real = 0; |
|
||||||
let lock = false; |
|
||||||
let lock_short = false; |
|
||||||
|
|
||||||
|
|
||||||
client.on('message', function (topic, message) { |
|
||||||
if(topic !== '/hass/'+zone+'/snsr/light')return; |
|
||||||
state_real = parseInt(message); |
|
||||||
state = state_real; |
|
||||||
}); |
|
||||||
let timer_lock = undefined; |
|
||||||
let timer_lock_short = undefined; |
|
||||||
let judge = ()=>{ |
|
||||||
let v_in_short = op_in_short(cache); |
|
||||||
if(ZONES[zone].in.hasOwnProperty('lock_short') && v_in_short > ZONES[zone].in.th_short){ |
|
||||||
if(!state){ |
|
||||||
client.publish('/ai/'+zone+'/light', '1'); |
|
||||||
state = 1; |
|
||||||
log(zone+'@in_short', cache, 'avg:', v_in_short); |
|
||||||
lock_short = true; |
|
||||||
clearTimeout(timer_lock_short); |
|
||||||
timer_lock_short = setTimeout(()=>{ |
|
||||||
lock_short = false;
|
|
||||||
}, ZONES[zone].in.lock_short*1000); |
|
||||||
} |
|
||||||
}
|
|
||||||
let v_in = op_in(cache, zone === 'din'); |
|
||||||
let v_out = op_out(cache, zone === 'din'); |
|
||||||
if(v_in > ZONES[zone].in.th){ |
|
||||||
if(!state || lock_short) { |
|
||||||
client.publish('/ai/'+zone+'/light', '1'); |
|
||||||
state = 1; |
|
||||||
log(zone+'@in', cache, 'avg:', v_in); |
|
||||||
lock = true; |
|
||||||
clearTimeout(timer_lock); |
|
||||||
timer_lock = setTimeout(()=>{ |
|
||||||
lock = false;
|
|
||||||
}, ZONES[zone].in.lock*1000); |
|
||||||
} |
|
||||||
}else if(v_out < ZONES[zone].out.th){ |
|
||||||
if(state && !lock && !lock_short){ |
|
||||||
client.publish('/ai/'+zone+'/light', '0'); |
|
||||||
state = 0; |
|
||||||
log(zone+'@out', cache, 'avg:', v_out); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
radar(client, zone, function(data){ |
|
||||||
cache =parseInt(data.substring(20, 22), 16);
|
|
||||||
client.publish('/ai/'+zone+'/peo', cache.toString()); |
|
||||||
//console.log(zone, cache)
|
|
||||||
//judge();
|
|
||||||
}); |
|
||||||
setInterval(judge, 1000); |
|
||||||
|
|
||||||
return function(){ |
|
||||||
state = state_real;
|
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
module.exports = function(G){ |
|
||||||
Object.keys(G).forEach(i=>global[i]=G[i]); |
|
||||||
let night = 0; |
|
||||||
let ai = 0; |
|
||||||
client.on('message', function (topic, message) { |
|
||||||
if(topic === '/mode/night') night = parseInt(message); |
|
||||||
if(topic === '/mode/ai') ai = parseInt(message); |
|
||||||
}); |
|
||||||
|
|
||||||
Object.keys(ZONES).forEach(zone=>{ |
|
||||||
|
|
||||||
let timer_unfrozen = undefined; |
|
||||||
let frozen = false; |
|
||||||
let retained_msg = true; |
|
||||||
client.on('message', function (topic, message) { |
|
||||||
if(topic === '/hass/'+zone+'/snsr/swi'){ |
|
||||||
if(retained_msg){ |
|
||||||
retained_msg = false; |
|
||||||
return; |
|
||||||
} |
|
||||||
frozen = true; |
|
||||||
clearTimeout(timer_unfrozen); |
|
||||||
timer_unfrozen = setTimeout(()=>{ |
|
||||||
frozen = false; |
|
||||||
refresh.forEach(f=>f()); |
|
||||||
}, ZONES[zone].frozen*1000); |
|
||||||
return; |
|
||||||
} |
|
||||||
if(topic !== '/ai/'+zone+'/light')return; |
|
||||||
if(!ai || !night) return; |
|
||||||
if(frozen) return; |
|
||||||
if(FLAG.lock) return; |
|
||||||
client.publish('/hass/'+zone+'/ctl/light', message); |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
@ -1,17 +0,0 @@ |
|||||||
|
|
||||||
module.exports = function(client, id, f){ |
|
||||||
|
|
||||||
client.on('connect', function(){ |
|
||||||
client.subscribe('/hass/'+id+'2/snsr/radar'); |
|
||||||
}); |
|
||||||
client.on('message', function (topic, message) { |
|
||||||
if(topic != '/hass/'+id+'2/snsr/radar') return; |
|
||||||
let data = message.toString('hex'); |
|
||||||
if(data.substring(0, 8) !== 'f4f3f2f1' || data.substring(data.length-8, data.length) !== 'f8f7f6f5' || data.indexOf('f8f7f6f5f4f3f2f1') !== -1) return; |
|
||||||
data = data.substring(8, data.length-8); |
|
||||||
//data = Buffer.from(data, 'hex');
|
|
||||||
f(data); |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
|
|
@ -1,305 +0,0 @@ |
|||||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. |
|
||||||
# yarn lockfile v1 |
|
||||||
|
|
||||||
|
|
||||||
balanced-match@^1.0.0: |
|
||||||
version "1.0.2" |
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" |
|
||||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== |
|
||||||
|
|
||||||
base64-js@^1.3.1: |
|
||||||
version "1.5.1" |
|
||||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" |
|
||||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== |
|
||||||
|
|
||||||
bl@^4.0.2: |
|
||||||
version "4.1.0" |
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" |
|
||||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== |
|
||||||
dependencies: |
|
||||||
buffer "^5.5.0" |
|
||||||
inherits "^2.0.4" |
|
||||||
readable-stream "^3.4.0" |
|
||||||
|
|
||||||
brace-expansion@^1.1.7: |
|
||||||
version "1.1.11" |
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" |
|
||||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== |
|
||||||
dependencies: |
|
||||||
balanced-match "^1.0.0" |
|
||||||
concat-map "0.0.1" |
|
||||||
|
|
||||||
buffer-from@^1.0.0: |
|
||||||
version "1.1.2" |
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" |
|
||||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== |
|
||||||
|
|
||||||
buffer@^5.5.0: |
|
||||||
version "5.7.1" |
|
||||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" |
|
||||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== |
|
||||||
dependencies: |
|
||||||
base64-js "^1.3.1" |
|
||||||
ieee754 "^1.1.13" |
|
||||||
|
|
||||||
commist@^1.0.0: |
|
||||||
version "1.1.0" |
|
||||||
resolved "https://registry.yarnpkg.com/commist/-/commist-1.1.0.tgz#17811ec6978f6c15ee4de80c45c9beb77cee35d5" |
|
||||||
integrity sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg== |
|
||||||
dependencies: |
|
||||||
leven "^2.1.0" |
|
||||||
minimist "^1.1.0" |
|
||||||
|
|
||||||
concat-map@0.0.1: |
|
||||||
version "0.0.1" |
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" |
|
||||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== |
|
||||||
|
|
||||||
concat-stream@^2.0.0: |
|
||||||
version "2.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" |
|
||||||
integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== |
|
||||||
dependencies: |
|
||||||
buffer-from "^1.0.0" |
|
||||||
inherits "^2.0.3" |
|
||||||
readable-stream "^3.0.2" |
|
||||||
typedarray "^0.0.6" |
|
||||||
|
|
||||||
debug@^4.1.1, debug@^4.3.1: |
|
||||||
version "4.3.4" |
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" |
|
||||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== |
|
||||||
dependencies: |
|
||||||
ms "2.1.2" |
|
||||||
|
|
||||||
duplexify@^4.1.1: |
|
||||||
version "4.1.2" |
|
||||||
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" |
|
||||||
integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== |
|
||||||
dependencies: |
|
||||||
end-of-stream "^1.4.1" |
|
||||||
inherits "^2.0.3" |
|
||||||
readable-stream "^3.1.1" |
|
||||||
stream-shift "^1.0.0" |
|
||||||
|
|
||||||
end-of-stream@^1.1.0, end-of-stream@^1.4.1: |
|
||||||
version "1.4.4" |
|
||||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" |
|
||||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== |
|
||||||
dependencies: |
|
||||||
once "^1.4.0" |
|
||||||
|
|
||||||
fs.realpath@^1.0.0: |
|
||||||
version "1.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" |
|
||||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== |
|
||||||
|
|
||||||
glob@^7.1.6: |
|
||||||
version "7.2.3" |
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" |
|
||||||
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== |
|
||||||
dependencies: |
|
||||||
fs.realpath "^1.0.0" |
|
||||||
inflight "^1.0.4" |
|
||||||
inherits "2" |
|
||||||
minimatch "^3.1.1" |
|
||||||
once "^1.3.0" |
|
||||||
path-is-absolute "^1.0.0" |
|
||||||
|
|
||||||
help-me@^3.0.0: |
|
||||||
version "3.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/help-me/-/help-me-3.0.0.tgz#9803c81b5f346ad2bce2c6a0ba01b82257d319e8" |
|
||||||
integrity sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ== |
|
||||||
dependencies: |
|
||||||
glob "^7.1.6" |
|
||||||
readable-stream "^3.6.0" |
|
||||||
|
|
||||||
ieee754@^1.1.13: |
|
||||||
version "1.2.1" |
|
||||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" |
|
||||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== |
|
||||||
|
|
||||||
inflight@^1.0.4: |
|
||||||
version "1.0.6" |
|
||||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" |
|
||||||
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== |
|
||||||
dependencies: |
|
||||||
once "^1.3.0" |
|
||||||
wrappy "1" |
|
||||||
|
|
||||||
inherits@2, inherits@^2.0.3, inherits@^2.0.4: |
|
||||||
version "2.0.4" |
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" |
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== |
|
||||||
|
|
||||||
js-sdsl@^2.1.2: |
|
||||||
version "2.1.4" |
|
||||||
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-2.1.4.tgz#16f31a56cc09ec57723e0c477fdc07e1d2522627" |
|
||||||
integrity sha512-/Ew+CJWHNddr7sjwgxaVeIORIH4AMVC9dy0hPf540ZGMVgS9d3ajwuVdyhDt6/QUvT8ATjR3yuYBKsS79F+H4A== |
|
||||||
|
|
||||||
leven@^2.1.0: |
|
||||||
version "2.1.0" |
|
||||||
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" |
|
||||||
integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== |
|
||||||
|
|
||||||
lru-cache@^6.0.0: |
|
||||||
version "6.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" |
|
||||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== |
|
||||||
dependencies: |
|
||||||
yallist "^4.0.0" |
|
||||||
|
|
||||||
minimatch@^3.1.1: |
|
||||||
version "3.1.2" |
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" |
|
||||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== |
|
||||||
dependencies: |
|
||||||
brace-expansion "^1.1.7" |
|
||||||
|
|
||||||
minimist@^1.1.0, minimist@^1.2.5: |
|
||||||
version "1.2.6" |
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" |
|
||||||
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== |
|
||||||
|
|
||||||
mqtt-packet@^6.8.0: |
|
||||||
version "6.10.0" |
|
||||||
resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz#c8b507832c4152e3e511c0efa104ae4a64cd418f" |
|
||||||
integrity sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA== |
|
||||||
dependencies: |
|
||||||
bl "^4.0.2" |
|
||||||
debug "^4.1.1" |
|
||||||
process-nextick-args "^2.0.1" |
|
||||||
|
|
||||||
mqtt@^4.3.7: |
|
||||||
version "4.3.7" |
|
||||||
resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-4.3.7.tgz#42985ca490ea25d2c12c119d83c632db6dc9d589" |
|
||||||
integrity sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw== |
|
||||||
dependencies: |
|
||||||
commist "^1.0.0" |
|
||||||
concat-stream "^2.0.0" |
|
||||||
debug "^4.1.1" |
|
||||||
duplexify "^4.1.1" |
|
||||||
help-me "^3.0.0" |
|
||||||
inherits "^2.0.3" |
|
||||||
lru-cache "^6.0.0" |
|
||||||
minimist "^1.2.5" |
|
||||||
mqtt-packet "^6.8.0" |
|
||||||
number-allocator "^1.0.9" |
|
||||||
pump "^3.0.0" |
|
||||||
readable-stream "^3.6.0" |
|
||||||
reinterval "^1.1.0" |
|
||||||
rfdc "^1.3.0" |
|
||||||
split2 "^3.1.0" |
|
||||||
ws "^7.5.5" |
|
||||||
xtend "^4.0.2" |
|
||||||
|
|
||||||
ms@2.1.2: |
|
||||||
version "2.1.2" |
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" |
|
||||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== |
|
||||||
|
|
||||||
number-allocator@^1.0.9: |
|
||||||
version "1.0.10" |
|
||||||
resolved "https://registry.yarnpkg.com/number-allocator/-/number-allocator-1.0.10.tgz#efc4c665e45bf60f0ad172aca1540e093b5292e8" |
|
||||||
integrity sha512-K4AvNGKo9lP6HqsZyfSr9KDaqnwFzW203inhQEOwFrmFaYevpdX4VNwdOLk197aHujzbT//z6pCBrCOUYSM5iw== |
|
||||||
dependencies: |
|
||||||
debug "^4.3.1" |
|
||||||
js-sdsl "^2.1.2" |
|
||||||
|
|
||||||
once@^1.3.0, once@^1.3.1, once@^1.4.0: |
|
||||||
version "1.4.0" |
|
||||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" |
|
||||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== |
|
||||||
dependencies: |
|
||||||
wrappy "1" |
|
||||||
|
|
||||||
path-is-absolute@^1.0.0: |
|
||||||
version "1.0.1" |
|
||||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" |
|
||||||
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== |
|
||||||
|
|
||||||
process-nextick-args@^2.0.1: |
|
||||||
version "2.0.1" |
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" |
|
||||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== |
|
||||||
|
|
||||||
pump@^3.0.0: |
|
||||||
version "3.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" |
|
||||||
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== |
|
||||||
dependencies: |
|
||||||
end-of-stream "^1.1.0" |
|
||||||
once "^1.3.1" |
|
||||||
|
|
||||||
readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: |
|
||||||
version "3.6.0" |
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" |
|
||||||
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== |
|
||||||
dependencies: |
|
||||||
inherits "^2.0.3" |
|
||||||
string_decoder "^1.1.1" |
|
||||||
util-deprecate "^1.0.1" |
|
||||||
|
|
||||||
reinterval@^1.1.0: |
|
||||||
version "1.1.0" |
|
||||||
resolved "https://registry.yarnpkg.com/reinterval/-/reinterval-1.1.0.tgz#3361ecfa3ca6c18283380dd0bb9546f390f5ece7" |
|
||||||
integrity sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ== |
|
||||||
|
|
||||||
rfdc@^1.3.0: |
|
||||||
version "1.3.0" |
|
||||||
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" |
|
||||||
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== |
|
||||||
|
|
||||||
safe-buffer@~5.2.0: |
|
||||||
version "5.2.1" |
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" |
|
||||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== |
|
||||||
|
|
||||||
split2@^3.1.0: |
|
||||||
version "3.2.2" |
|
||||||
resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" |
|
||||||
integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== |
|
||||||
dependencies: |
|
||||||
readable-stream "^3.0.0" |
|
||||||
|
|
||||||
stream-shift@^1.0.0: |
|
||||||
version "1.0.1" |
|
||||||
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" |
|
||||||
integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== |
|
||||||
|
|
||||||
string_decoder@^1.1.1: |
|
||||||
version "1.3.0" |
|
||||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" |
|
||||||
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== |
|
||||||
dependencies: |
|
||||||
safe-buffer "~5.2.0" |
|
||||||
|
|
||||||
typedarray@^0.0.6: |
|
||||||
version "0.0.6" |
|
||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" |
|
||||||
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== |
|
||||||
|
|
||||||
util-deprecate@^1.0.1: |
|
||||||
version "1.0.2" |
|
||||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" |
|
||||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== |
|
||||||
|
|
||||||
wrappy@1: |
|
||||||
version "1.0.2" |
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" |
|
||||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== |
|
||||||
|
|
||||||
ws@^7.5.5: |
|
||||||
version "7.5.9" |
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" |
|
||||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== |
|
||||||
|
|
||||||
xtend@^4.0.2: |
|
||||||
version "4.0.2" |
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" |
|
||||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== |
|
||||||
|
|
||||||
yallist@^4.0.0: |
|
||||||
version "4.0.0" |
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" |
|
||||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== |
|
Loading…
Reference in new issue