2019年10月11日 星期五

用Python撰寫Django背景執行的程式

Django Background Tasks:https://django-background-tasks.readthedocs.io/en/latest/



Running background tasks in django:https://medium.com/@robinttt333/running-background-tasks-in-django-f4c1d3f6f06e

執行步驟如下:

1.先啟動cmd應用程式

2. 執行mkvirtualenv background指令,建立虛擬環境

3.執行pip install django指令,安裝Django套件

4.執行pip install django-background-tasks,安裝Django背景執行套件

5.執行django-admin startproject background,建立background專案

6.打開settings.py在INSTALLED_APPS 串列中,設定'background_task'的APP。

7.執行python manage.py makmigrations background_task

8.執行python manage.py migrate

9.執行python manage.py runserver

10.打開瀏覽器,輸入127.0.0.1:8000

11.執行python manage.py startapp background_app,新增一個APP

12.在settings.py中新增background_app APP

14.打開urls.py新增一個path


15.打開background_app/views.py 輸入下列程式

16.開啟另一個cmd,輸入python manage.py process_tasks

經由上圖就可以看到,工作在背景下工作。



2019年9月30日 星期一

Home Assistant 居家助理的系統架構

以下架構圖來自:https://developers.home-assistant.io/docs/en/architecture_index.html

居家控制的架構:




上圖中Home Control的系統架構圖



元件架構圖:

整合第三方元件架構圖



實體架構圖



Hass.io架構圖

2019年9月29日 星期日

經由MQTT來與Home Assistant來溝通

把下面命令,放到configurations.yaml中。

light:
  - platform: mqtt
    name: "bathroom_secondary_light"
    state_topic: "smartthings/Bathroom Secondary Light/switch"
    command_topic: "smartthings/Bathroom Secondary Light/switch"
    payload_on: "on"
    payload_off: "off"
    retain: true

存檔後重新啟動


使用MQTTBOX來進行測試

一種日常工作所設計的描述語言 - YAML

“YAML Ain’t Markup Language”,簡稱YAML,YAML並不是一種標記語言,而是一種數據序列化語言,此語這是針對日常工作,所設計出具有友善介面而且可以與現代編程語言可以很好地一起工作。 YAML有著極大地提高了計算能力,是開放、可互操作且易於理解的工具。 YAML從一開始就被設計為對使用數據的人員有用且友好。 它使用可打印字符Unicode碼,其中一些字符提供結構信息,其餘字符包含數據本身。 YAML通過最大程度地減少結構特徵的數量,並允許數據以自然而有意義的方式展示出來,從而實現了獨特的清潔度。 例如,縮進可以用於結構,冒號用於分隔鍵:值對和破折號用於創建“項目符號”列表。

數據結構雖然有著無數種形式,但是它們都可以用三個基本型別來表示:映射(雜湊/字典),序列(陣列/串列)和純量(字串/數字)。 YAML利用了這些基本型別,並添加了簡單的鍵入系統和別名機制,來形成用於序列化任何本機數據結構的完整語言。 儘管大多數編程語言都可以使用YAML進行數據序列化,但是YAML擅長使用三個基本型別來構建基本的語言。 這些包括新的敏捷語言,例如Perl,Python,PHP,Ruby和Javascript。

YAML的設計目標是:

YAML易於人類閱讀。
YAML數據可在編程語言之間移植。
YAML與敏捷語言的本機數據結構匹配。
YAML具有一致的模型來支持通用工具。
YAML支持一次性處理。
YAML具有表現力和可擴展性。
YAML易於實現和使用。

詳細的介紹請參閱:YAML Ain’t Markup Language (YAML™) Version 1.2

2019年9月22日 星期日

畫點做AR

一個免費的擴增實境軟體,稱為DotAR。
網址:https://assetstore.unity.com/packages/tools/dot-ar-97973

1.按下Import鈕,直接滙入。

2.選擇Project->Assests->Smaple->DotAR_Sample.unity

3.選擇File->Build Settings->Android->Switch Platform

4.選擇Player Settings,把Package name改成com.dot.ar
5.按下Build鏈,將生成的APK檔放到手機上,進行安裝。

6.進行測試

以下是官方的影片

好玩的Python,兩行指令完成居家助理

Home Assistance Website:https://www.home-assistant.io/



Home Assistance Demo:https://demo.home-assistant.io/#/lovelace/0




只要用兩個指令即可完成
pip install homeassistant
hass --open-ui

填上帳號和密碼
選擇下一步

 選擇完成
完成的畫面

手機版的指令:https://www.home-assistant.io/docs/frontend/mobile/
手機版的畫面


後續文章:

2019年8月20日 星期二

好玩Python,看見程式之美

Python程式以簡潔出名以下兩支程式輸出結果都是:
2
4
6
8
但第一支程式寫法比較簡潔,但也較不容易看懂。

1
2
3
A=[1,2,3,4,5,6,7,8,9]
B=[2,4,6,8]
[print (x) for x in A if x in B]

從第二支程式,就很容易看出,迴圈內有判斷式。
1
2
3
4
5
A=[1,2,3,4,5,6,7,8,9]
B=[2,4,6,8]
for x in A:
    if x in B:
        print (x)