Arduino+Esp8266+DTH11

Arduino买来吃灰都一年多了,这几天突然想折腾一下,就淘了两个Esp8266(01S和12F)准备和以前淘的DTH11模块整一个温度湿度记录系统。多种折腾,最终用Arduino nano + Esp8266-01s+DTH11实现,当然还有个黑群晖挂web服务器实现采集记录。

中间遇到两个问题:一是arduino和esp8266通过串口发指令的时候,要做字符串比较,因为写代码比较随意,导致比较不成功,最终结果是没用Sting.trim()的原因。因为串口发送数据print()和println()都在混用,收到的字符会在尾部多结束符合,可用trim()去掉。

二是dth11接在arduino上,esp8266上跑一个webserver,需要获取数据时esp8266发指令到arduino,arduino发回数据,问题是获取数据不同步,每次都需要二次刷新网页才能取得数据。因为arduino需要定期获取dth11的数据缓存,就直接改为发送到esp8266上缓存。串口收发数据是异步的,而且arduino是单线程,应该不会出问题。另外arduino和esp8266必须共地,不然串口乱码。

Lighttpd的目录保护

有些不想让人随便看的东西会在访问目录时认证一下,对于Lighttpd来说还是比较方便的(参照这里),可选的方式也比较多。我选择htpasswd,一个Apache的工具来生成认证文件,再通过设置lighttpd.conf开启认证。

htpasswd -bc .passwd username password

在lighttpd.conf后面添加

server.modules += ( "mod_auth" )
auth.backend = "htpasswd"

## for htpasswd
auth.backend.htpasswd.userfile = "/home/.passwd"

auth.require = ( "/path/" =>
             (
             # method must be either basic or digest
               "method"  => "basic",
               "realm"   => "download archiv",
               "require" => "user=name1|user=name2"
             )
           )

关于HTTPS的设置

前两月获得过一个免费的SSL证书,一直没时间弄,这几天有点时间设置了下。从网站上下载的证书包含三个文件(.cer .key .crt),如果是Apache三个文件直接使用,编辑站点对应的站点配置文件,如:apache安装目录/conf/extra/httpd-ssl.conf, 修改内容如下

    <VirtualHost www.domain.com:443>    
        DocumentRoot "/var/www/html"    
        ServerName www.domain.com    
        SSLEngine on    
        SSLCertificateFile          证书文件路径/_www.domain.com.cer  
        SSLCertificateKeyFile    证书文件路径/_www.domain.com.key    
        SSLCertificateChainFile 证书文件路径/_www.domain.com_ca.crt  
    </VirtualHost>

如果是Nginx,配置里只要两个文件,需要将cer文件内容复制到crt文件的头部,然后配置如下

阅读剩余部分...

无题

最近忙得没有时间看邮件和网站,没想到AcrosVM停运了,并入了hostigation。监测报警也没注意,直到前几天想起看一下博客,才发现无法打开,才看到邮件。赶忙在hostigation上注册账号发支援单,终于在今天恢复正常了。虚惊一场,原以为要从头开始的,现在没有时间折腾了。go on ……