将微信打造成有逼格的公众号?--天气(一)

image 就是这个,请给一个教程,谢谢了

好,我整理一下。大神的这个url,是要微信访问你的主机的。所以你也要先确认,

  1. 你的node-red可以访问到你主机的一个文件夹,图片要放到这个文件夹下。如果是在docker下安装的,要做一些处理。
  2. 你外网可以访问到node-red主机。我是启用了https访问,但我记得企业微信好像没有特别要https访问,能从外网访问到就可以了。

我是读取报错,,,,

你直接用浏览器访问这个url。如果能访问,那就是节点配置有问题。如果不能访问,那就是要建立一个静态网页,让浏览器可以访问才行

就卡在这步骤 外网访问的文件目录

image 就这样 图片url可以访问 但是报这个错误

我在这个地方卡住了2天,就是url无法访问,就要解决url访问的问题。

建立图片存储目录

要保证node-red主机可以访问到。
比如:/home/pi/Pictures
image-20200316233637883

建立静态网页和http访问

   server {  
    listen       9901;   #端口号     这是我自己指定的端口号
    server_name  localhost;  #本机  

    charset utf-8;  

    #access_log  logs/host.access.log  main;  

  location ~ .*\.(gif|jpg|jpeg|png)$ {  
    expires 24h;  
        root /home/pi/Pictures/;#指定图片存放路径  
     #   access_log /usr/local/websrv/nginx-1.9.4/logs/images.log;#日志存放路径  
        proxy_store on;  
        proxy_store_access user:rw group:rw all:rw;  
        proxy_temp_path         /home/pi/Pictures/;#图片访问路径  
        proxy_redirect          off;  
        proxy_set_header        Host 127.0.0.1;  
        client_max_body_size    10m;  
        client_body_buffer_size 1280k;  
        proxy_connect_timeout   900;  
        proxy_send_timeout      900;  
        proxy_read_timeout      900;  
        proxy_buffer_size       40k;  
        proxy_buffers           40 320k;  
        proxy_busy_buffers_size 640k;  
        proxy_temp_file_write_size 640k;  
        if ( !-e $request_filename)  
        {  
             proxy_pass  http://127.0.0.1;#默认80端口  
        } 
  } 

}

然后使用浏览器浏览试试看
http://192.168.3.234:9901/CLOUDY.jp
应该可以看到
image-20200316233858657

image 报这个错误

image 图片是可以访问的

你把url这句注释掉//,看看还报错吗?如果还报错,就是你前面那句有问题,无法获取本地图片。第一句话是取文件给微信临时素材的;第二句话是给微信内容的。你要是可以url访问,那就是第一句给微信临时素材,取不到文件,是另外的问题了

image 还是报错

你这个目录看着怪怪的。

  1. 要保证目录是绝对路径,从根目录开始,一直到存放图片的目录
  2. 如果是docker安装,要保证这个目录包含在docker映射目录之下
  3. 这个目录的访问权限

我的这个配置是node-red安装在docker下,这个目录是docker启动的时候明确的映射目录下的

:smile:docker是比较特殊,下面是我的docker启动node-red命令,你对照一下啊。你那个图片目录要放到主机的“/home/pi/docker/node-red-data”下面,比如“/home/pi/docker/node-red-data/picture/”;你节点填写的位置是“/data/picture”。就是你节点填写的根目录,和主机映射的那个目录是对应的。
image

不打算用本地了 老哥这句msg.filename = ${skycon_en}.jpg; 怎么改成从网上获取图片 image

或者怎么把/home/pi/docker/node-red-data映射出来

:smile:我原先也打算把图片放到一个统一的文件服务器下。但是我刚刚接触docker,对其了解还不是很深刻,所以就没有去动。不过,你可以试一下,这要求你的docker可以访问到其他主机的目录。估计要借助ssh之类的工具,这样你这台“docker主机”才能访问到其他主机的目录啊。下面是个图片调试的工具,可以查看“本地目录”下的图片,也可以看网站的图片。你可以使用“本地目录”那个流程测试读取本地文件是否可行
安装节点:node-red-contrib-image-output
流程是
image

[{"id":"2d04e3ce.40c1dc","type":"inject","z":"5628b8c4.892958","name":"触发图片预览","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":2820,"wires":[["88415c40.cf072"]]},{"id":"856e4fde.26b17","type":"image","z":"5628b8c4.892958","name":"","width":160,"data":"payload","dataType":"msg","thumbnail":true,"active":true,"x":820,"y":2820,"wires":[]},{"id":"88415c40.cf072","type":"http request","z":"5628b8c4.892958","name":"获取网站图片","method":"GET","ret":"bin","paytoqs":false,"url":"https://bbsiobrokercn-1255708240.cos.ap-hongkong.myqcloud.com/forum/201906/11/203727zy5cqi4ipix5q1ih.png","tls":"","persist":false,"proxy":"","authType":"","x":520,"y":2820,"wires":[["856e4fde.26b17"]]},{"id":"4c46aa70.7b2d64","type":"inject","z":"5628b8c4.892958","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":2900,"wires":[["bc0392a.fefaa7"]]},{"id":"bc0392a.fefaa7","type":"file in","z":"5628b8c4.892958","name":"读取本地图片","filename":"/data/Pictures/CLEAR_NIGHT.jpg","format":"","chunk":false,"sendError":false,"encoding":"none","x":520,"y":2900,"wires":[["856e4fde.26b17"]]}]

如果是用docker,请注意相对路径和实体路径的差异。绝大多数的人是坑在了这里。你的图片要外网能访问才行。不是随便一个目录就能访问的。

外网可以访问,,,

大佬,这个地方把我坑惨了。我开始node-red不是在docker下安装的,调试就简单得多。后来改在docker下安装,真的是找不到一丝的抓手。什么招都用上了,梅林路由器都差点让我搞残废了。网上教程太乱了。这也是制约小白们的一个很大的障碍。

大神那个节点,第一句话是本地读取,第二句话是网络访问。你现在要解决第一句话,本地读取。我刚刚那个节点流程,上面的是网络访问,下面的是本地读取。你可以把自己的参数带进来测试。