『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: liuje

[新奇玩法] 解決新版 [綠色PCB小愛同學] 無法寫入檔案+開機ssh+mico(3P排....

  [复制链接]

2

主题

171

帖子

1175

积分

金牌会员

Rank: 6Rank: 6

积分
1175
金钱
1004
HASS币
10
 楼主| 发表于 2018-11-12 08:23:20 | 显示全部楼层

可以找下面這種3pin, 間距1.0mm的連接排線, 就可以免拆PCB板進行改機喔~

2018-11-11_16-31-14.jpg
2018-11-11_16-16-15.jpg
回复

使用道具 举报

4

主题

87

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
金钱
322
HASS币
0
发表于 2018-11-13 21:32:58 | 显示全部楼层
感谢分享了 不过单片机的代码用不了
改了一下, 换了esp8266 就行了
#include <Arduino.h>
#include <SoftwareSerial.h>
 
SoftwareSerial swSer(14, 12, false, 256);
 
void setup()
{
  Serial.begin(115200); 
  swSer.begin(115200);
}
 
void loop()
{
 while(swSer.available()) 
 {
   String str = swSer.readString(); 
   midWare(str);
 }
 delay(1);  
}
 
 
void midWare(String str)
{
  Serial.println(str);
   if ( (str.indexOf("Please press Enter to activate this console") > 0) or (str.indexOf("crond (busybox 1.27.2) started, log level 5") > 0) )
   {
      Serial.println("Got the command!"); 
      delay(10000); 
      swSer.println("sh /data/mico.sh > /tmp/mico.log 2>&1 &");
      swSer.println("dropbear -r /data/dropbear_rsa_host_key");
      delay(500);
      Serial.println("ssh enable!"); 
   }
 delay(1);
}

回复

使用道具 举报

2

主题

171

帖子

1175

积分

金牌会员

Rank: 6Rank: 6

积分
1175
金钱
1004
HASS币
10
 楼主| 发表于 2018-11-13 21:47:53 | 显示全部楼层
本帖最后由 liuje 于 2018-11-13 21:53 编辑
小斌斌 发表于 2018-11-13 21:32
感谢分享了 不过单片机的代码用不了
改了一下, 换了esp8266 就行了
[code]#include

good.   恭喜改機成功.

因為我是用Arduino自帶軟件uart庫,  而你是使用esp8266 (軟件庫是不同的)
所以需要自己另外安裝,  軟件uart的宣告方式也有些不同.   

然後你是用軟件uart方式,  輪詢uart的方法  (非中斷),   這樣也可以.  

主要是因為ESP8266跑的比較快,  所以軟件uart能使用115200的速率 (如果用Pro mini,  軟件uart就達不到這個速率, 就會不能用)

只是要注意,  esp8266功耗大許多.

只能從PCB的源頭電源DC12V取電再降壓使用,   比較安全 ~    
回复

使用道具 举报

4

主题

87

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
金钱
322
HASS币
0
发表于 2018-11-13 22:17:49 | 显示全部楼层
liuje 发表于 2018-11-13 21:47
good.   恭喜改機成功.

因為我是用Arduino自帶軟件uart庫,  而你是使用esp8266 (軟件庫是不同的)

我一开始是用的pro micro , 不知道是不是我板子问题,一直匹配不了,而且获取到的都是乱码,
只有先暂时用esp8266 代替,等pro mini到了后再换上去试试
回复

使用道具 举报

2

主题

171

帖子

1175

积分

金牌会员

Rank: 6Rank: 6

积分
1175
金钱
1004
HASS币
10
 楼主| 发表于 2018-11-13 22:37:41 | 显示全部楼层
小斌斌 发表于 2018-11-13 22:17
我一开始是用的pro micro , 不知道是不是我板子问题,一直匹配不了,而且获取到的都是乱码,
只有先暂时 ...

要注意  板子的工作頻率.    如果是 8MHZ ,  那就算用硬件uart,  速度也達不到115200,
接上去就是一堆亂碼沒錯.

所以我一直強調,  一定要用16MHZ的振盪頻率的板,  並使用 "硬件uart",   才能達到 115200 的速度喔 !!
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
发表于 2018-11-15 08:33:41 | 显示全部楼层
很强大,期待能出支持dlna的教程
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
发表于 2018-11-26 21:47:36 | 显示全部楼层
本帖最后由 plutosherry 于 2018-11-26 22:17 编辑

已解决
回复

使用道具 举报

2

主题

171

帖子

1175

积分

金牌会员

Rank: 6Rank: 6

积分
1175
金钱
1004
HASS币
10
 楼主| 发表于 2018-11-27 07:19:45 | 显示全部楼层
本帖最后由 liuje 于 2018-11-27 07:25 编辑

使用綠板PCB改造的同學請注意.   請修改F大原代碼下半部份(mico.sh), 標示紅色字體的代碼,  才能保證長時間運行正常.

(綠板PCB由於系統版本差異, 不支持 "usleep xx" 命令, 所以要把它改成 "sleep 0", 就行了,
如果直接去掉該命令, 則連續運行2-3天後會發現動作越來越卡.....)

------------------------------------------------------------------------------------------------------------------
# @TODO: doamin是scenes的情况下,暂停播放,记录播放状态并暂停以及继续播放时有问题的
      # 为了保证不影响暂停效果,所以调整不同的停止播放方式
      if [ "${miai_domain}" != "scenes" ];then
        echo "== 其他模式 | ${miai_domain}"
        # 若干循环,直到resume成功一次直接跳出
        seq 1 200 | while read line;do
          code=`ubus call mediaplayer player_play_operation {\"action\":\"resume\"}|awk -F 'code":' '{print $2}'`
          if [[ "${code}" -eq "0" ]];then
            echo "== 停止成功"
            break
          fi
          sleep 0
        done
      else
        echo "== 场景模式 | ${miai_domain}"
        seq 1 10 | while read line;do
          ubus call mediaplayer player_play_operation {\"action\":\"stop\"} > /dev/null 2>&1
          sleep 0
        done
      fi

      # 记录播放状态并暂停,方便在HA服务器处理逻辑的时候不会插播音乐,0为未播放,1为播放中,2为暂停
      play_status=`ubus -t 1 call mediaplayer player_get_play_status | awk -F 'status' '{print $2}' | cut -c 5`
      if [ "${miai_domain}" != "scenes" ];then
        ubus call mediaplayer player_play_operation {\"action\":\"pause\"} > /dev/null 2>&1
      fi

      # @todo:
      # 转发asr和res给服务端接口,远端可以处理控制逻辑完成后返回需要播报的TTS文本
      # 2秒连接超时,4秒传输超时
      tts=`curl --insecure –connect-timeout 2 -m 2 -s -u "${nodered_auth}" --data-urlencode "asr=${asr_content}" --data-urlencode "res=${res_content}" "${nodered_url}/miai"`
      echo "== 请求完成"

      # 如果远端返回内容不为空则用TTS播报之
      if [[ -n "${tts}" ]];then
        echo "== 播报TTS | TTS内容: ${tts}"
        ubus call mibrain text_to_speech "{\"text\":\"${tts}\",\"save\":0}" > /dev/null 2>&1
        # 最长20秒TTS播报时间,20秒内如果播报完成跳出
        seq 1 20 | while read line;do
          media_type=`ubus -t 1 call mediaplayer player_get_play_status|awk -F 'media_type' '{print $2}'|cut -c 5`
          if [ "${media_type}" == "" ] || [ "${media_type}" -ne "1" ];then
            echo "== 播报TTS结束"
            break
          fi
          sleep 1
        done
      fi

      # 如果之前音乐是播放的则接着播放
      if [[ "${play_status}" -eq "1" ]];then
        echo "== 继续播放音乐"
        # 这里延迟一秒是因为前面处理如果太快,可能引起恢复播放不成功
        sleep 1
        if [ "${miai_domain}" != "scenes" ];then
          ubus call mediaplayer player_play_operation {\"action\":\"play\"} > /dev/null 2>&1
        fi
      fi
    fi

    log_res=`curl --insecure –connect-timeout 2 -m 2 -s -u "${nodered_auth}" --data-urlencode "asr=${asr_content}" --data-urlencode "res=${res_content}" "${nodered_url}/miai/set/log"`
    echo "== 投日志 | ${log_res}"
  fi

  # 以某频度去更新拦截词
  if [[ "${keywords_update_timeout}" -gt "0" ]];then
    now=`date +%s`
    step=`expr ${now} - ${last_time}`
    # 根据设定时间间隔获取更新词
    if [[ "$step" -gt "${keywords_update_timeout}" ]];then
        asr_keywords=`curl --insecure –connect-timeout 2 -m 2 -s -u "${nodered_auth}" "${nodered_url}/miai/get/asr"`
        res_keywords=`curl --insecure –connect-timeout 2 -m 2 -s -u "${nodered_auth}" "${nodered_url}/miai/get/res"`
        echo "== 更新关键词 | asr关键词内容: ${asr_keywords} | res关键词内容: ${res_keywords}"
        last_time=`date +%s`
    fi
  fi
  sleep 0
done




回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
发表于 2018-11-27 10:54:31 | 显示全部楼层
liuje 发表于 2018-11-27 07:19
使用綠板PCB改造的同學請注意.   請修改F大原代碼下半部份(mico.sh), 標示紅色字體的代碼,  才能保證長時間 ...

请问如何测试破解的小爱有没有和nodered连接成功?
小爱在安装install.sh一键破解包的时候可以正常连接到nodered的地址并验证通过。
但是我导入F大的node流程并做了修改,可以看到设备列表,但是语音控制小爱没反应。(提示没有找到该设备)何解?
回复

使用道具 举报

2

主题

171

帖子

1175

积分

金牌会员

Rank: 6Rank: 6

积分
1175
金钱
1004
HASS币
10
 楼主| 发表于 2018-11-27 11:25:17 | 显示全部楼层
plutosherry 发表于 2018-11-27 10:54
请问如何测试破解的小爱有没有和nodered连接成功?
小爱在安装install.sh一键破解包的时候可以正常连接到 ...

正常您在 node-red後台, 應該要能看到設備輪詢成功的記錄, 以及接口調用成功的記錄, 才屬於能正常控制. (如下紅框內容)
2018-11-27_11-22-07.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 17:56 , Processed in 0.274904 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表