家庭物联网 篇一:基于树莓派的泛在物联网云打印关键技术研究

2019-06-30 00:20:00 15点赞 58收藏 8评论


摘要

4代出来了,心动,却没有行动。我已有3B+,购于淘宝,裸板回来自己按需配置。看到4代评论里有人说不知道拿来干什么,我就诞生了写这篇文不对题的想法。

研究背景

树莓派是个低功耗、小成本的计算机,能做许多事,不一定都能做好,但真的实现成本很低。如果真不知道拿来干什么,你无视就好了,说明没有需求。

树莓派诞生之初,我就关注它,为什么直到3代才出手,因为此前没有需求。孩子上小学了,家里配置一台打印机是必须的。没有经过太多调研,匆忙购买了HP LaserJet Pro M104w,简单够用。我和老婆经常出差,家里只有老人的时候,这款机子的远程打印功能就显得很实用了。但好景不长,惠普的云打印停止支持手机上的HP ePrint应用,新的HP Smart 应用代之以Print Anywhere功能却不支持我买的这款,只能通过往@hpeprint.com邮箱发邮件的方式打印。出差或在路上要给孩子打作业时极为不便。

其实这都能忍,但又遇到了新问题:本地经常无法打印,有老外反映是win10下无线打印端口的问题。叔能忍、婶不能忍,终于下定决心换掉,遂通过亚马逊海外购入手Brother HL-L2370DN,看中的是支持双面打印和有线网络。Brother借助谷歌云打印实现远程打印,此时我想到了用树莓派做打印服务器,自己实现远程打印。

惠普(HP)M104w黑白激光打印机 无线A4打印 P1108/1106+wifi 家用 小型办公899元京东去购买兄弟 HL-L2370DN 单色激光打印机 A 4 打印,双面打印与网络HL-L2370DN HL-L2370DN Printer With Start Up Toner亚马逊中国去购买


研究内容

1. 在树莓派上安装CUPS,驱动我选了相近的Brother HL-L2250DN。

此处略去……字

基于树莓派的泛在物联网云打印关键技术研究

2. 树莓派上开sftp服务

略去此处……字

基于树莓派的泛在物联网云打印关键技术研究

3. 问宽带客服要公网IP,注册DDNS(我选的是华硕路由器自带的asuscomm.com),并设置端口转发。

再次略去……字

基于树莓派的泛在物联网云打印关键技术研究

4. 咳咳,重点来了,《24小时Python从入门到精通》,在写这本书前我先拼凑了如下代码:

#!/usr/bin/python

#coding=utf-8

import os

import paramiko

import Image

import cups

import time

import subprocess


hostname = ['114.114.114.114','61.134.1.4']

response = [0, 0, 0]

server = '192.168.2.1'

port = 22

username = 'admin'

password = 'password'

command = 'reboot'

paramiko.util.log_to_file('paramiko.log')


conn = cups.Connection()

printers = conn.getPrinters()

printer_name = printers.keys()[0]

option = [{}, {}, {}]

option[0] = {'fit-to-page': 'True','orientation-requested': '3', 'sides': 'one-sided'}

option[1] = {'fit-to-page': 'True','orientation-requested': '4', 'sides': 'one-sided'}

option[2] = {'fit-to-page': 'True','orientation-requested': '3', 'sides': 'two-sided-short-edge'}

path = ['', '']

path[0] = '/home/pi/print_s/'

path[1] = '/home/pi/print_d/'



while True:

time.sleep(300)

while True:

response[2] = os.system('ping -c 1 ' + server)

if response[2] != 0:

time.sleep(150)

else:

break

response[0] = os.system('ping -c 1 ' + hostname[0])

response[1] = os.system('ping -c 1 ' + hostname[1])

if response[0] != 0 and response[1] != 0:

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

ssh.connect(server, port, username, password)

stdin, stdout, stderr = ssh.exec_command(command)

stdin.write('Y')

finally:

ssh.close()


file_list = os.listdir(path[0])

for i in range(len(file_list)):

filename = os.path.splitext(file_list[i])

if filename[1] in ('.pdf', '.jpg', '.png'):

printerQueueLen = len(conn.getJobs())

if printerQueueLen <= 1:

time.sleep(1)

if filename[1] in ('.jpg','.png'):

im = Image.open(path[0] +file_list[i])

if im.width > im.height:

printID =conn.printFile(printer_name, path[0] + file_list[i], 'pi',option[1])

else:

printID =conn.printFile(printer_name, path[0] + file_list[i], 'pi',option[0])

else:

printID =conn.printFile(printer_name, path[0] + file_list[i], 'pi',option[0])

if printID > 0:

os.remove(path[0] +file_list[i])

file_list = os.listdir(path[1])

for i in range(len(file_list)):

filename = os.path.splitext(file_list[i])

if filename[1] == '.pdf':

printerQueueLen = len(conn.getJobs())

if printerQueueLen <= 1:

time.sleep(1)

printID = conn.printFile(printer_name,path[1] + file_list[i], 'pi', option[2])

if printID > 0:

os.remove(path[1] +file_list[i])

我不是程序猿,我同样讨厌写文档、写注释:

// 定时扫目录打印并清空。

// 中间有一段代码是用来重启路由器的。我在AC68U设置里找遍了都没找到自动重启的菜单项,直到买入AC86U后才发现有,此前我还买了个智能开关定时重启路由。AC68U丢去做AiMesh节点了,不管它有没有了。

// 以上代码除了路由器的用户名和密码外,都是在运代码内容,各位可以稍加修改就运用。

// 比较笨的办法,手机qq或微信布置作业了,用Total Commander的sftp插件传到树莓派上。

// 当然,用远程桌面登录树莓派打印功能更为强大,如word文档的打印,但这是另一个话题。

// 嗯,别忘了将python .py &加入/etc/rc.local启动。

// 友提:Python是空格敏感的。


研究结论

1. 树莓派能够实现云打印功能。把打印机与小学生作业时空互联,从而实现了泛在物联。

2. 适合自己的就是好的。走有自己特色的路,让别人也有路可走。

3. 由需求产生的项目才是好项目。



展开 收起

HP 惠普 1003w 无线激光打印机

HP 惠普 1003w 无线激光打印机

699元起

brother 兄弟 悦省系列 HL-1218W 激光打印机 黑白色

brother 兄弟 悦省系列 HL-1218W 激光打印机 黑白色

699元起

HP 惠普 创系列 Tank 2506dw 激光打印机 灰白色

HP 惠普 创系列 Tank 2506dw 激光打印机 灰白色

1234.05元起

HP 惠普 锐系列 1008w 激光打印机

HP 惠普 锐系列 1008w 激光打印机

849元起

brother 兄弟 HL-2260D 黑白激光打印机 灰色

brother 兄弟 HL-2260D 黑白激光打印机 灰色

849元起

HP 惠普 M17w 黑白激光打印机 白色

HP 惠普 M17w 黑白激光打印机 白色

759元起

惠普 (HP) 5800zf A4 彩色激光多功能一体机 (打印、复印、扫描、传真)(商用)需预定

惠普 (HP) 5800zf A4 彩色激光多功能一体机 (打印、复印、扫描、传真)(商用)需预定

28999元起

Brother 兄弟 HL-1208 黑白激光打印机

Brother 兄弟 HL-1208 黑白激光打印机

688元起

HP 惠普 P1106 Plus 黑白激光打印机

HP 惠普 P1106 Plus 黑白激光打印机

1049元起

HP 惠普 LaserJet 1020 Plus 激光打印机 白色

HP 惠普 LaserJet 1020 Plus 激光打印机 白色

1029元起

HP 惠普 Pro M281 fdw 彩色激光打印机 白色

HP 惠普 Pro M281 fdw 彩色激光打印机 白色

4999元起

HP 惠普 锐系列 150nw 彩色激光打印机 白色

HP 惠普 锐系列 150nw 彩色激光打印机 白色

2149元起

HP 惠普 P1106 黑白激光打印机

HP 惠普 P1106 黑白激光打印机

709元起

HP 惠普 M437nda 黑白激光数码复合机 白色

HP 惠普 M437nda 黑白激光数码复合机 白色

5599元起

HP 惠普 锐系列 108w 黑白激光打印机 白色

HP 惠普 锐系列 108w 黑白激光打印机 白色

799元起

HP 惠普 Colour LaserJet Pro M154nw 彩色激光打印机

HP 惠普 Colour LaserJet Pro M154nw 彩色激光打印机

2349元起
8评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
58
扫一下,分享更方便,购买更轻松