Commit 407840b0 by 杨苏杭

涂鸦

parents
1.jpg

98.3 KB

app21.jpg

37.8 KB

app22.jpg

50.1 KB

app23.jpg

51.7 KB

app24.jpg

80.8 KB

app25.jpg

51.8 KB

box_1.png

1.1 MB

box_2.png

1.09 MB

<!DOCTYPE html>
<html>
<head>
<title>充值协议</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
html body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
line-height: 1.6;
color: #333;
background-color: #fff;
box-sizing: border-box;
word-wrap: break-word
}
html body > :first-child {
margin-top: 0;
padding-top: 0;
}
section:first-of-type { margin-top: 10px; }
html body h4 {
line-height: 1.2;
margin-top: 1rem;
margin-bottom: 16px;
color: #000
}
html body h4 {
font-weight: bold
}
p.text { text-indent: 2rem; }
p {
margin: 0;
margin-bottom: 8px;
word-wrap: break-word
}
.text { text-align: justify; }
.strong { font-weight: bold; color: #000; }
.text-child > p { margin: 0; }
@media screen and (min-width:914px) {
.container { padding: 2rem calc(50% - 420px) }
}
@media screen and (max-width:450px) {
.container { padding: 1rem }
}
</style>
</head>
<body>
<div class="container">
<section>
<p class="text">
尊敬的用户,为保障您的合法权益,请您在充值前仔细阅读本《充值协议》(以下称“本协议”),以便您了解杭州贤芯科技有限公司(以下称“本公司”)所提供的智能换电服务“小鲸换电”的充值、返利及余额使用规则,从而避免您产生任何误解。
<span class="strong">
用户应特别注意字体加粗的部分。当您点击“充值”按钮后,即视为您已完整阅读、充分理解本协议,并同意按本协议的规定进行充值、参与返利及/或使用账户余额。
</span>
</p>
</section>
<section>
<p class="text strong">1. 定义</p>
<p class="text strong">
充值本金:您通过小鲸换电软件向您已注册的小鲸换电用户账户实际支付的金额。 </p>
<p class="text strong">
账户余额:您的小鲸换电用户账号中显示的金额。包括充值的本金、小鲸换电通过充值返利等优惠活动赠送的返利金额。
</p>
</section>
<section>
<p class="text strong">2. 充值规则</p>
<p class="text">
小鲸换电将通过充值页面及/或具体的活动页面,及时公布不同数额的充值本金以及可享受的一定数额的返利金额。例如,充值180元得190元,则充值本金为180元,账户可得余额为190元。具体活动详情,以充值页面或具体活动页面信息为准,小鲸换电也将在微信订阅号中发布相关信息。
</p>
</section>
<section>
<p class="text strong">3. 账户余额有效期限</p>
<p class="text">
小鲸换电将通过充值页面及/或具体的活动页面,及时公布不同数额的充值本金以及可享受的一定数额的返利金额。例如,充值180元得190元,则充值本金为180元,账户可得余额为190元。具体活动详情,以充值页面或具体活动页面信息为准,小鲸换电也将在微信订阅号中发布相关信息。
</p>
</section>
<section>
<p class="text strong">4.账户余额使用规则</p>
<p class="text strong">
(1) 账户余额仅可用于购买换电套餐,不可用于支付押金、不可转移、转赠或提现;
</p>
<p class="strong text">
(2) 用户购买换电套餐时,可选择使用账户余额支付,或者选择通过第三方支付平台支付(如支付宝或微信钱包支付)。
</p>
</section>
<section>
<p class="text strong">5.正当性保证</p>
<p class="text strong">
您完全理解并同意,小鲸换电所提供的包含充值赠送在内的所有优惠推广活动仅面向正当且合法的、按照《用户协议》使用我们服务的用户。我们一旦发现您存在利用我们的规则漏洞,进行任何形式的作弊行为(包括但不限于通过我们的活动获得不正当的经济利益),我们有权取消与作弊行为相关账户的赠送金额,并追回您作弊所得的不正当经济利益,同时关闭作弊账户或与您相
</p>
</section>
</div>
<script type="text/javascript">
document.ready = function (callback) {
//兼容FF,Google
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
document.removeEventListener('DOMContentLoaded', arguments.callee, false)
callback()
}, false)
} else if (document.attachEvent) { //兼容IE
document.attachEvent('onreadystatechange', function () {
if (document.readyState == "complete") {
document.detachEvent("onreadystatechange", arguments.callee)
callback()
}
})
} else if (document.lastChild == document.body) { callback() }
}
// 获取url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
document.ready(function() {
// 根据dpi设置根元素字体大小
window.setRem = function () {
var baseSize = 32
var scale = document.documentElement.clientWidth / 750
if (scale > 1.5) { scale = 0.5 }
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
})
window.onresize = function() { setRem() }
</script>
</body>
</html>
\ No newline at end of file
cost.png

110 KB

<!DOCTYPE html>
<html>
<head>
<title>押金协议</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
html body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
line-height: 1.6;
color: #333;
background-color: #fff;
box-sizing: border-box;
word-wrap: break-word
}
html body > :first-child {
margin-top: 0;
padding-top: 0;
}
section:first-of-type { margin-top: 10px; }
html body h4 {
line-height: 1.2;
margin-top: 1rem;
margin-bottom: 16px;
color: #000
}
html body h4 {
font-weight: bold
}
p.text { text-indent: 2rem; }
p {
margin: 0;
margin-bottom: 8px;
word-wrap: break-word
}
.text { text-align: justify; }
.strong { font-weight: bold; color: #000; }
.text-child > p { margin: 0; }
.text-child > p:last-child { margin-bottom: 8px; }
@media screen and (min-width:914px) {
.container { padding: 2rem calc(50% - 420px) }
}
@media screen and (max-width:450px) {
.container { padding: 1rem }
}
</style>
</head>
<body>
<div class="container">
<section>
<p class="text">
尊敬的用户,为了保证您的合法权益,请您在交押金之前务必仔细阅读本规定。
<span class="strong">
您应该特别注意字体加粗的内容。当您点击“支付”按钮时,即视为您已经完全阅读和充分理解杭州贤芯科技有限公司(以下称为“本公司”)押金缴纳的规定,并同意按照本规定执行。
</span>
</p>
</section>
<section>
<p class="text strong">
1. 押金定义:押金是指用户在注册小鲸换电账户后为使用换电服务所须缴纳的一笔可无息退还的款项,其目的是为了激励用户合法、规范、文明地使用换电服务。押金不可用于消费,用户在归还租借的电池后,可随时申请退还。
</p>
</section>
<section>
<p class="text strong">2. 押金的缴纳:</p>
<div class="text-child">
<p class="text strong">
(1) 通过小鲸换电软件平台,经由支付宝或微信钱包进行押金支付。
</p>
<p class="text strong">
(2) 押金支付的金额与您在使用小鲸换电服务时取用的智慧电池的数量和单颗智慧电池押金金额相关;单颗智慧电池的押金金额将显示在押金缴纳页面。
</p>
</div>
</section>
<section>
<p class="text strong">3. 押金的退还:</p>
<div class="text-child">
<p class="text strong">
(1) 押金退还是在您归还智慧电池后,且未发生违反使用规则造成智慧电池人为损坏的前提下,小鲸换电将后台进行审核,通过审核后无息退还押金。
</p>
<p class="text strong">
(2) 本公司在收到您的押金退还申请后,会立即进入押金退还审核流程;符合退还前提的,押金退还路径为原支付路径,但具体退款到账时间会根据您选择的支付方式所对应的银行或第三方支付的处理流程不同而有所差别。
</p>
<p class="text strong">
(3) 请您理解并同意:押金缴纳是您使用小鲸换电服务的必须前提条件之一,如您选择退还押金,您将无法继续使用本公司服务;同时,您账户内的优惠券或返利、免费换电的试用天数等各项优惠活动也将在押金退款成功后自动被清零。
</p>
<p class="text strong">
特别提示:用户使用智慧电池期间应爱护所使用的电池,按照使用规则合理、正常、安全地使用。如在此期间内,因用户使用不当或保管不善导致发生智慧电池遗失、被窃或毁坏及部分损坏等情况,我司将不予退还智慧电池押金,同时用户还须对本公司进行电池成本差额的赔偿(电池成本差额=电池成本-不予退还的电池押金)。
</p>
</div>
</section>
<section>
<p class="text">4. 如您对押金缴纳仍有疑问的,请通过软件平台咨询客服。</p>
</section>
</div>
<script type="text/javascript">
document.ready = function (callback) {
//兼容FF,Google
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
document.removeEventListener('DOMContentLoaded', arguments.callee, false)
callback()
}, false)
} else if (document.attachEvent) { //兼容IE
document.attachEvent('onreadystatechange', function () {
if (document.readyState == "complete") {
document.detachEvent("onreadystatechange", arguments.callee)
callback()
}
})
} else if (document.lastChild == document.body) { callback() }
}
// 获取url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
document.ready(function() {
// 根据dpi设置根元素字体大小
window.setRem = function () {
var baseSize = 32
var scale = document.documentElement.clientWidth / 750
if (scale > 1.5) { scale = 0.5 }
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
})
window.onresize = function() { setRem() }
</script>
</body>
</html>
\ No newline at end of file
device1.png

94.2 KB

<!DOCTYPE html>
<html>
<head>
<title>帮助</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
html body {
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
background-color: #fff;
box-sizing: border-box;
word-wrap: break-word
}
html body>:first-child {
margin-top: 0
}
html body h4 {
line-height: 1.2;
margin-top: 1rem;
margin-bottom: 16px;
color: #000
}
html body h4 {
font-size: 1.2rem;
font-weight: 600
}
html body > p {
margin-top: 0;
margin-bottom: 1rem;
word-wrap: break-word
}
.text { text-align: justify; }
.image { max-width: 100%; display: block; margin: 0 auto;}
.image-wrapper { text-align: center }
.image-wrapper > img {
display: inline-block;
width: 40%;
}
@media screen and (min-width:914px) {
.container { padding: 2rem calc(50% - 457px) }
}
@media screen and (max-width:450px) {
.container { font-size: 14px !important; padding: 1rem }
}
</style>
</head>
<body>
<div class="container">
<section>
<h4>1、如何缴纳押金?</h4>
<p class="text">
电池押金可以通过小鲸换电小程序支付,注册登录后,在首页点击左上角的按钮,点击“我的钱包”→“押金”→选择支付方式→支付。
</p>
<img class="image" src="https://hdg-helper.oss-cn-beijing.aliyuncs.com/pay_deposit.png" alt="押金缴纳说明" width="90%" />
</section>
<section>
<h4>2、如何租借电池?</h4>
<p class="text">
用户(骑手)缴纳押金后可以在站点领取电池,领取到电池之后需要通过小鲸换电小程序在“我的电池”页面,手动扫描电池下方的二维码绑定电池。
</p>
<img class="image" src="https://hdg-helper.oss-cn-beijing.aliyuncs.com/bind_battery.png" alt="电池绑定" width="50%" />
</section>
<section>
<h4>3、如何购买换电套餐?</h4>
<p class="text">
换电套餐可以通过小鲸换电小程序购买,租借电池后,在首页点击左上角的按钮,点击“我的钱包”→“购买换电套餐”→选择套餐类别和支付方式→支付。套餐一旦确定支付后不可退款或更改套餐。
</p>
</section>
<section>
<h4>4、如何换电池?</h4>
<p class="text">
(1)扫码换电,用户(骑手)购买换电套餐后,根据定位到达附近的换电柜,点击小鲸换电小程序首页下方的“扫码换电”对准换电柜屏幕上的二维码扫描,空仓门打开后放入没电电池,关上仓门后等待几秒满电仓门打开,取出新电池。
</p>
<div class="image-wrapper">
<img class="image" src="https://hdg-helper.oss-cn-beijing.aliyuncs.com/box_1.png" alt="押金缴纳说明" />
<img class="image" src="https://hdg-helper.oss-cn-beijing.aliyuncs.com/box_2.png" alt="押金缴纳说明" />
</div>
<p class="text">(2)短信换电,用户(骑手)购买换电套餐后,根据定位到达附近的换电柜,在换电柜屏幕上输入手机号码+验证码,点击“确定”,余下步骤与扫码换电方法相同。</p>
</section>
<section>
<h4>5、如何退电池?</h4>
<p class="text">
用户(骑手)将电池退还至站点,由站点在系统里操作退还。
</p>
</section>
<section>
<h4>6、余额充值</h4>
<p class="text">
钱包余额可以通过小鲸换电小程序充值,注册登录后,在首页点击左上角的按钮,点击“我的钱包”→“余额”→选择要充值的类别和支付方式→支付。
</p>
</section>
<section id="section7">
<h4>7、客服</h4>
<p class="text">
客服热线:<span id="phone"></span>,如您有任何疑问,请拨打客服热线,我们将竭诚为您服务。
</p>
</section>
</div>
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
document.ready = function (callback) {
//兼容FF,Google
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
document.removeEventListener('DOMContentLoaded', arguments.callee, false)
callback()
}, false)
} else if (document.attachEvent) { //兼容IE
document.attachEvent('onreadystatechange', function () {
if (document.readyState == "complete") {
document.detachEvent("onreadystatechange", arguments.callee)
callback()
}
})
} else if (document.lastChild == document.body) { callback() }
}
// 获取url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
document.ready(function() {
// 根据dpi设置根元素字体大小
window.setRem = function () {
var baseSize = 32
var scale = document.documentElement.clientWidth / 750
if (scale > 1.5) { scale = 0.5 }
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
var imgs = []
var imgObj = document.getElementsByTagName('img'); //获取图文中所有的img标签对象
for(var i = 0; i < imgObj.length; i++) {
imgs.push(imgObj[i].src)
//下面调用微信内置图片浏览组建
imgObj[i].onclick = function() {
WeixinJSBridge.invoke("imagePreview", {
"urls": imgs,
"current": this.src
})
}
}
var phone = getUrlParam('phone') || ''
document.getElementById('phone').innerText = phone
})
window.onresize = function() { setRem() }
</script>
</body>
</html>
\ No newline at end of file
index.png

319 KB

stat1.png

186 KB

<!DOCTYPE html>
<html>
<head>
<title>用户协议</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
html body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
line-height: 1.6;
color: #333;
background-color: #fff;
box-sizing: border-box;
word-wrap: break-word
}
html body > :first-child {
margin-top: 0;
padding-top: 0;
}
html body h4 {
line-height: 1.2;
margin-top: 1rem;
margin-bottom: 16px;
color: #000
}
html body h4 {
font-weight: bold
}
p.text { text-indent: 2rem; }
p {
margin: 0;
margin-bottom: 8px;
word-wrap: break-word
}
.text { text-align: justify; }
.strong { font-weight: bold; color: #000; }
.text-child > p { margin: 0; }
@media screen and (min-width:914px) {
.container { padding: 2rem calc(50% - 420px) }
}
@media screen and (max-width:450px) {
.container { padding: 1rem }
}
</style>
</head>
<body>
<div class="container">
<section>
<h4>1.特别提示(用户应特别注意字体加粗内容)</h4>
<p class="text">
1.1 本《小鲸换电服务协议》(以下简称《协议》)是服务使用人(以下简称“用户”)与杭州贤芯科技有限公司(以下简称“本公司”或者“我们”)之间关于用户下载、安装、使用“小鲸换电”软件(包括但不限于PC版及移动电话版等各种无线手持终端版本的“吉递换电”软件)、注册、使用、管理小鲸换电帐号,以及使用本公司提供的相关服务所订立的协议。
</p>
<p class="text">
1.2 “小鲸换电”软件归杭州贤芯科技有限公司所有,并同意按照本协议的规定及其不定时发布的操作规则提供基于互联网以及移动网的相关服务(包括换电服务、电动车租用服务等相关服务软件的网络服务和/或电动车及电池的使用服务,以下也称“本服务”或“小鲸换电服务”)。
<span class="strong">
为获得本服务,用户应认真阅读、充分理解本《协议》中各条款,特别涉及免除或者限制本公司责任的免责条款,对用户的权利限制的条款、约定争议解决方式、司法管辖、法律适用的条款。请您审慎阅读,一经点击登录按键,即表示同意接受本《协议》;如您不接受本《协议》的部分或全部内容,请您不要点击登录按键。(无民事行为能力人谢绝使用本服务、限制民事行为能力人应在法定监护人监护下阅读、理解及使用本服务)。除非您接受本《协议》所有条款,否则您无权下载、安装或使用本软件及其相关服务。您的下载、安装、使用、帐号获取和登录等行为将视为对本《协议》的接受,并同意接受本《协议》各项条款的约束。
</span>
</p>
<p class="strong text">
1.3 用户注册成功后,本公司将给予每个用户一个用户帐号,该帐号归本公司所有,用户完成申请注册手续后,获得帐号的使用权。帐号使用权仅属于初始申请注册人,禁止赠与、借用、租用、转让或售卖。用户承担帐号与密码的保管责任,并就其帐号及密码项下之一切活动承担全部责任。
</p>
<p class="strong text">
1.4 手机号码修改仅限为同一个用户,禁止过户给其他人使用,以避免不必要的纠纷。用户申请押金退还时,押金会原路返回至最初缴纳押金的账户,因用户违反规定而造成资金损失的,由违规用户自行承担责任。
</p>
</section>
<section>
<h4>2.权利声明</h4>
<p class="text">
2.1 “小鲸换电”软件是由本公司所有。“小鲸换电”软件的一切版权、商标权、专利权等知识产权、商业秘密,以及相关的信息内容,包括但不限于:文字表述及其组合、图标、图饰、图表、色彩、界面设计、版面框架、有关数据、印刷材料、或电子文档等均受中华人民共和国著作权法、商标法、专利法、反不正当竞争法等法律法规和相应的国际条约的保护。除涉及第三方授权的软件或技术等外,本公司享有所有权和知识产权。
</p>
<p class="text">
2.2 未经本公司书面同意,用户不得为任何营利性或非营利性的目的自行实施、利用、转让或许可任何三方实施、利用、转让上述权利,本公司保留追究上述未经许可行为的权利。
</p>
</section>
<section>
<h4>3. 授权范围</h4>
<p class="text">
3.1 用户可以为非商业目的在单一台终端设备上安装、使用、显示、运行“senthink换电”软件。用户不得以商业运营目的安装、使用、运行“senthink换电”软件,不可以对本软件或者本软件运行过程中释放到任何计算机终端内存中的数据及本软件运行过程中客户端与服务器端的交互数据进行复制、更改、挂接运行或创作任何衍生作品等行为,形式包括但不限于使用插件、外挂或非经授权的第三方工具/服务接入本软件和相关系统。
</p>
<p class="text">
3.2 保留权利:未明示授权的其他一切权利仍归本公司所有,用户使用其他权利时须另外取得本公司的书面同意。
</p>
</section>
<section>
<h4>4. 服务内容</h4>
<p class="text strong">
4.1 “senthink换电”服务的具体内容由本公司根据实际情况提供,主要包括用户的注册登录、找寻智能换电柜导航、电权使用、更换电池、寻车定位、评价及举报投诉、查询记录等。
</p>
<p class="text strong">
4.2 “senthink换电”提供的部分服务为收费的服务,用户使用收费服务需要向本公司支付一定的费用。对于收费服务,我们会在用户使用之前给予用户明确的提示,只有用户根据提示确认其愿意支付相关费用,用户才能使用该等收费服务。如用户拒绝支付相关费用,则本公司有权不向用户提供该等收费服务。
</p>
<p class="text">
4.3 用户理解,本公司按照本协议第4.1条提供本服务。相关网络服务、设备(如个人电脑、手机、其他与接入互联网或移动网有关的装置)及第三方收取的相关费用(如为接入互联网而支付的电话费及上网费、为使用移动网而支付的手机费)等均应由用户自行解决并承担相关费用。
</p>
</section>
<section>
<h4>5.服务变更、中断或终止</h4>
<p class="text strong">
5.1 鉴于本服务的特殊性,用户同意本公司有权随时变更、中断或终止部分或全部的本服务(包括收费服务及免费服务)。如变更、中断或终止的本服务属于免费服务,本公司无需通知用户,也无需对任何用户或任何第三方承担任何责任;如变更、中断或终止的网络服务属于收费服务,本公司应当在变更、中断或终止之前事先通知用户,并应向受影响的用户提供等值的替代性的收费服务,如用户不愿意接受替代性的收费服务,就该用户已经向本公司支付的服务费,本公司将在扣除该用户实际使用的收费服务所对应的服务费之后,将剩余的服务费退还给该用户。
</p>
<p class="text strong">
5.2 本公司需要定期或不定期地对提供本服务的平台(如互联网网站、移动网络等)或相关的设备进行检修或者维护,如因此类情况而造成收费服务在合理时间内的中断,本公司无需为此承担任何责任,该检修或者维护将事先进行通告。
</p>
<p class="text strong">
5.3 如发生下列任何一种情形,本公司有权随时中断或终止向用户提供本协议项下的服务【包括但不限于收费及免费的本服务】而无需对用户或任何第三方承担任何责任:
</p>
<div class="text-child">
<p class="text strong">
5.3.1 用户提供的个人资料有违真实性、完整性、准确性、合法性、有效性;
</p>
<p class="text strong">
5.3.2 用户违反本协议规定;
</p>
<p class="text strong">
5.3.3 用户在使用收费服务时未按规定向本公司支付相应的服务费;
</p>
<p class="text strong">
5.3.4 用户利用本服务从事违法犯罪活动;
</p>
<p class="text strong">
5.3.5 用户恶意诋毁本公司名誉或散播不实信息;
</p>
</div>
</section>
</div>
<script type="text/javascript">
document.ready = function (callback) {
//兼容FF,Google
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
document.removeEventListener('DOMContentLoaded', arguments.callee, false)
callback()
}, false)
} else if (document.attachEvent) { //兼容IE
document.attachEvent('onreadystatechange', function () {
if (document.readyState == "complete") {
document.detachEvent("onreadystatechange", arguments.callee)
callback()
}
})
} else if (document.lastChild == document.body) { callback() }
}
// 获取url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) return unescape(r[2])
return null
}
document.ready(function() {
// 根据dpi设置根元素字体大小
window.setRem = function () {
var baseSize = 32
var scale = document.documentElement.clientWidth / 750
if (scale > 1.5) { scale = 0.5 }
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
})
window.onresize = function() { setRem() }
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style type="text/css">
body {
font-family: Helvetica, arial, sans-serif;
font-size: 14px;
line-height: 1.6;
padding-top: 10px;
padding-bottom: 10px;
background-color: white;
padding: 30px; }
body > *:first-child {
margin-top: 0 !important; }
body > *:last-child {
margin-bottom: 0 !important; }
a {
color: #4183C4; }
a.absent {
color: #cc0000; }
a.anchor {
display: block;
padding-left: 30px;
margin-left: -30px;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
bottom: 0; }
h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
cursor: text;
position: relative; }
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center;
text-decoration: none; }
h1 tt, h1 code {
font-size: inherit; }
h2 tt, h2 code {
font-size: inherit; }
h3 tt, h3 code {
font-size: inherit; }
h4 tt, h4 code {
font-size: inherit; }
h5 tt, h5 code {
font-size: inherit; }
h6 tt, h6 code {
font-size: inherit; }
h1 {
font-size: 28px;
color: black; }
h2 {
font-size: 24px;
border-bottom: 1px solid #cccccc;
color: black; }
h3 {
font-size: 18px; }
h4 {
font-size: 16px; }
h5 {
font-size: 14px; }
h6 {
color: #777777;
font-size: 14px; }
p, blockquote, ul, ol, dl, li, table, pre {
margin: 15px 0; }
hr {
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;
border: 0 none;
color: #cccccc;
height: 4px;
padding: 0;
}
body > h2:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child + h2 {
margin-top: 0;
padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
margin-top: 0;
padding-top: 0; }
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0; }
h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
margin-top: 0; }
li p.first {
display: inline-block; }
li {
margin: 0; }
ul, ol {
padding-left: 30px; }
ul :first-child, ol :first-child {
margin-top: 0; }
dl {
padding: 0; }
dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px; }
dl dt:first-child {
padding: 0; }
dl dt > :first-child {
margin-top: 0; }
dl dt > :last-child {
margin-bottom: 0; }
dl dd {
margin: 0 0 15px;
padding: 0 15px; }
dl dd > :first-child {
margin-top: 0; }
dl dd > :last-child {
margin-bottom: 0; }
blockquote {
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777; }
blockquote > :first-child {
margin-top: 0; }
blockquote > :last-child {
margin-bottom: 0; }
table {
padding: 0;border-collapse: collapse; }
table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
table tr:nth-child(2n) {
background-color: #f8f8f8; }
table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr th :first-child, table tr td :first-child {
margin-top: 0; }
table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }
img {
max-width: 100%; }
span.frame {
display: block;
overflow: hidden; }
span.frame > span {
border: 1px solid #dddddd;
display: block;
float: left;
overflow: hidden;
margin: 13px 0 0;
padding: 7px;
width: auto; }
span.frame span img {
display: block;
float: left; }
span.frame span span {
clear: both;
color: #333333;
display: block;
padding: 5px 0 0; }
span.align-center {
display: block;
overflow: hidden;
clear: both; }
span.align-center > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: center; }
span.align-center span img {
margin: 0 auto;
text-align: center; }
span.align-right {
display: block;
overflow: hidden;
clear: both; }
span.align-right > span {
display: block;
overflow: hidden;
margin: 13px 0 0;
text-align: right; }
span.align-right span img {
margin: 0;
text-align: right; }
span.float-left {
display: block;
margin-right: 13px;
overflow: hidden;
float: left; }
span.float-left span {
margin: 13px 0 0; }
span.float-right {
display: block;
margin-left: 13px;
overflow: hidden;
float: right; }
span.float-right > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: right; }
code, tt {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px; }
pre code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent; }
.highlight pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }
pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }
pre code, pre tt {
background-color: transparent;
border: none; }
sup {
font-size: 0.83em;
vertical-align: super;
line-height: 0;
}
kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb
}
* {
-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
body {
width: 854px;
margin:0 auto;
}
}
@media print {
table, pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
</style>
</head>
<body>
<h1 id="toc_0">物联网IOT分析设计</h1>
<h2 id="toc_1">IOT平台</h2>
<h3 id="toc_2">各公司的IOT功能</h3>
<table>
<thead>
<tr>
<th style="text-align: center">公司</th>
<th style="text-align: center">pass平台</th>
<th style="text-align: center">通讯模块</th>
<th style="text-align: center">sass服务</th>
<th style="text-align: center">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">阿里</td>
<td style="text-align: center">阿里IOT平台</td>
<td style="text-align: center">LoRaWAN</td>
<td style="text-align: center">不提供</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td style="text-align: center">涂鸦智能</td>
<td style="text-align: center">涂鸦云平台</td>
<td style="text-align: center">联网模组(pin to pin)</td>
<td style="text-align: center">提供基础app,和app定制,按功能收费</td>
<td style="text-align: center"></td>
</tr>
</tbody>
</table>
<h3 id="toc_3">涂鸦IOT</h3>
<h4 id="toc_4">控制台</h4>
<p><img src="/Users/banice/Desktop/tuya/index.png" alt="/Users/banice/Desktop/tuya/index.png"></p>
<p><img src="/Users/banice/Desktop/tuya/index2.png" alt="/Users/banice/Desktop/tuya/index2.png"></p>
<h4 id="toc_5">App工作台</h4>
<p><img src="/Users/banice/Desktop/tuya/app/app1.png" alt="/Users/banice/Desktop/tuya/app/app1.png">
<img src="/Users/banice/Desktop/tuya/app/app2.png" alt="/Users/banice/Desktop/tuya/app/app2.png">
<img src="/Users/banice/Desktop/tuya/app/app3.png" alt="/Users/banice/Desktop/tuya/app/app3.png">
<img src="/Users/banice/Desktop/tuya/app/app4.png" alt="/Users/banice/Desktop/tuya/app/app4.png">
<img src="/Users/banice/Desktop/tuya/app/app5.png" alt="/Users/banice/Desktop/tuya/app/app5.png">
<img src="/Users/banice/Desktop/tuya/app/app6.png" alt="/Users/banice/Desktop/tuya/app/app6.png">
<img src="/Users/banice/Desktop/tuya/app/app7.png" alt="/Users/banice/Desktop/tuya/app/app7.png">
<img src="/Users/banice/Desktop/tuya/app/app8.png" alt="/Users/banice/Desktop/tuya/app/app8.png">
<img src="/Users/banice/Desktop/tuya/app/app9.png" alt="/Users/banice/Desktop/tuya/app/app9.png">
<img src="/Users/banice/Desktop/tuya/app/app10.png" alt="/Users/banice/Desktop/tuya/app/app10.png"></p>
<h4 id="toc_6">App功能</h4>
<p><img src="/Users/banice/Desktop/tuya/app21.jpg" alt="/Users/banice/Desktop/tuya/app21.jpg">
<img src="/Users/banice/Desktop/tuya/app22.jpg" alt="/Users/banice/Desktop/tuya/app22.jpg">
<img src="/Users/banice/Desktop/tuya/app23.jpg" alt="/Users/banice/Desktop/tuya/app23.jpg">
<img src="/Users/banice/Desktop/tuya/app24.jpg" alt="/Users/banice/Desktop/tuya/app24.jpg">
<img src="/Users/banice/Desktop/tuya/app25.jpg" alt="/Users/banice/Desktop/tuya/app25.jpg"></p>
<h4 id="toc_7">App增值</h4>
<p><img src="/Users/banice/Desktop/tuya/market1.png" alt="/Users/banice/Desktop/tuya/market1.png"></p>
<h4 id="toc_8">采购</h4>
<p><img src="/Users/banice/Desktop/tuya/purchase1.png" alt="/Users/banice/Desktop/tuya/purchase1.png">
<img src="/Users/banice/Desktop/tuya/purchase2.png" alt="/Users/banice/Desktop/tuya/purchase2.png"></p>
<h4 id="toc_9">数据</h4>
<p><img src="/Users/banice/Desktop/tuya/stat1.png" alt="/Users/banice/Desktop/tuya/stat1.png"></p>
<h4 id="toc_10">设备</h4>
<p><img src="/Users/banice/Desktop/tuya/device1.png" alt="/Users/banice/Desktop/tuya/device1.png"></p>
<h4 id="toc_11">费用</h4>
<p><img src="/Users/banice/Desktop/tuya/cost.png" alt="/Users/banice/Desktop/tuya/cost.png"></p>
<h3 id="toc_12">IOT一般功能</h3>
<p><img src="/Users/banice/Desktop/iot.png" alt="/Users/banice/Desktop/iot.png"></p>
<h3 id="toc_13">IOT架构</h3>
<p><img src="/Users/banice/Desktop/iot_struct.png" alt="/Users/banice/Desktop/iot_struct.png"></p>
<h3 id="toc_14">技术选型</h3>
<h4 id="toc_15">微服务的框架</h4>
<ul>
<li>go-micor</li>
<li>swoft</li>
</ul>
<h4 id="toc_16">db,nodb的连接池</h4>
<h4 id="toc_17">mqtt的Broker</h4>
<p><img src="/Users/banice/Desktop/mqtt_broker.png" alt=""></p>
<h4 id="toc_18">rpc框架</h4>
<ul>
<li>Tars</li>
<li>gRPC</li>
<li>Thrift</li>
<li>Dubbo</li>
</ul>
<h4 id="toc_19">消息持久化</h4>
<ul>
<li><p>kalfka</p></li>
<li><p>rabbitmq</p></li>
</ul>
</body>
</html>
# 物联网IOT分析设计
# 物联网IOT分析设计
## IOT平台
### 各公司的IOT功能
|公司|pass平台|通讯模块|sass服务|备注|
|:---:|:---:|:---:|:---:|:---:|
|阿里|阿里IOT平台|LoRaWAN|不提供|
|涂鸦智能|涂鸦云平台|联网模组(pin to pin)|提供基础app,和app定制,按功能收费||
### 涂鸦IOT
#### 控制台
![/Users/banice/Desktop/tuya/index.png](/Users/banice/Desktop/tuya/index.png)
![/Users/banice/Desktop/tuya/index2.png](/Users/banice/Desktop/tuya/index2.png)
#### App工作台
![/Users/banice/Desktop/tuya/app/app1.png](/Users/banice/Desktop/tuya/app/app1.png)
![/Users/banice/Desktop/tuya/app/app2.png](/Users/banice/Desktop/tuya/app/app2.png)
![/Users/banice/Desktop/tuya/app/app3.png](/Users/banice/Desktop/tuya/app/app3.png)
![/Users/banice/Desktop/tuya/app/app4.png](/Users/banice/Desktop/tuya/app/app4.png)
![/Users/banice/Desktop/tuya/app/app5.png](/Users/banice/Desktop/tuya/app/app5.png)
![/Users/banice/Desktop/tuya/app/app6.png](/Users/banice/Desktop/tuya/app/app6.png)
![/Users/banice/Desktop/tuya/app/app7.png](/Users/banice/Desktop/tuya/app/app7.png)
![/Users/banice/Desktop/tuya/app/app8.png](/Users/banice/Desktop/tuya/app/app8.png)
![/Users/banice/Desktop/tuya/app/app9.png](/Users/banice/Desktop/tuya/app/app9.png)
![/Users/banice/Desktop/tuya/app/app10.png](/Users/banice/Desktop/tuya/app/app10.png)
#### App功能
![/Users/banice/Desktop/tuya/app21.jpg](/Users/banice/Desktop/tuya/app21.jpg)
![/Users/banice/Desktop/tuya/app22.jpg](/Users/banice/Desktop/tuya/app22.jpg)
![/Users/banice/Desktop/tuya/app23.jpg](/Users/banice/Desktop/tuya/app23.jpg)
![/Users/banice/Desktop/tuya/app24.jpg](/Users/banice/Desktop/tuya/app24.jpg)
![/Users/banice/Desktop/tuya/app25.jpg](/Users/banice/Desktop/tuya/app25.jpg)
#### App增值
![/Users/banice/Desktop/tuya/market1.png](/Users/banice/Desktop/tuya/market1.png)
#### 采购
![/Users/banice/Desktop/tuya/purchase1.png](/Users/banice/Desktop/tuya/purchase1.png)
![/Users/banice/Desktop/tuya/purchase2.png](/Users/banice/Desktop/tuya/purchase2.png)
#### 数据
![/Users/banice/Desktop/tuya/stat1.png](/Users/banice/Desktop/tuya/stat1.png)
#### 设备
![/Users/banice/Desktop/tuya/device1.png](/Users/banice/Desktop/tuya/device1.png)
#### 费用
![/Users/banice/Desktop/tuya/cost.png](/Users/banice/Desktop/tuya/cost.png)
### IOT一般功能
![/Users/banice/Desktop/iot.png](/Users/banice/Desktop/iot.png)
### IOT架构
![/Users/banice/Desktop/iot_struct.png](/Users/banice/Desktop/iot_struct.png)
### 技术选型
#### 微服务的框架
* go-micor
* swoft
#### db,nodb的连接池
#### mqtt的Broker
![](/Users/banice/Desktop/mqtt_broker.png)
#### rpc框架
* Tars
* gRPC
* Thrift
* Dubbo
#### 消息持久化
* kalfka
* rabbitmq
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment