Posts

Showing posts from January, 2018

[Raspberry Pi] Raspberry Pi 溫濕度監測

Image
前言:
前年跟朋友一起入手了一隻Raspberry Pi 2 Model B, 其中一隻拿來當了備份用的NAS(不要期望當真的NAS, 因為存取很慢), 另外一隻閒置了一年變成上一年的to-do side project,最後也來得及在2017最後一天拖延症康復了所以完成了這個project。把難搞到事記筆記一下。

需求:
任何地方打開網頁就可以隨時監控家裡溫濕度變化。

硬體準備:
1. 1張灌好作業系統的16GB micro sd card。 我使用的是Raspbian with Desktop
2. 溫濕度監測器,我使用的是用Arduino弄好的DHT11 Sensor。使用它的原因主要是超便宜,溫度感測是還可以,濕度的話...用來看Delta還是可以啦。
3. 把DHTsensor插到正確的腳位上,如圖


安裝:
我是參考Jeffery大大的文章.
先開啟SSH。Raspbian雖然有圖型化介面,但是Model B跑起來實在太慢了,用SSH進入好太太太(回音)太太太多了。開啟教學在這裡。利用SSH進入設備。安裝python。根據Jeffery大大文中所說安裝PIGPIO library。sudo pigpiod 起動daemon。測試一下剛剛接的sensor是否正確,進入到PIGPIO目錄下,sudo python跑一下dht11.py,有回傳數值代表可以了。去ubidots註冊一個帳號,使用它的原因是少量sensor是免費的而且介面好用。然後建立一個Data Resource,在Resource中建立Temperature跟Humidity兩項參數。並且取得它們的API Key。API Key是用來上傳資料到ubidots用的。詳細建立的方法在這裡。取得API Key以後,回到SSH介面,因為沒有豪華的Visual Studio,所以我是用sudo nano dht11.py開啟檔案,根據Jeffery大大的修改方式把它修改成可以上傳到ubidots的方式。重點是API Key不要填錯。修改完以後執行sudo python dht11.py &,如果沒有出現錯誤的話,在ubidots頁面大概會開始看到數據了,大概像這樣,你沒看錯,濕度真的是很不準...
最後,設定Raspberry pi起動時自動開啟pigpiod 和 dhy11.py我是使用rc.loca…

[ASP.NET] 使用Entity Framework Code First 筆記

Image
前言:
前陣前幫公司開發專案打算使用Code First建立資料庫遇到了不少問題,現在終於有點時間在公司好好再摸魚認真研究一下,順便記錄起來。關於如何在專案中使用Code First Entity Framework很多神人已經有詳細的教學,我是看Kevin大的這篇還有軟體主廚大的這篇 ,很快已經可以弄出來。


建立資料庫之前最好先設定資料庫名稱,可以在web.config中修改。
第一次使用Code first database先要在 "Package Manager Console" 輸入enable-migrations,如果不止一個DbContext的話要加入參數 –ContextTypeName 指定Db才能繼續進行。建立好Model以後可以輸入add-migration把model加入到pending model,然後輸入update-database -Verbose (Verbose參數令Console直接看到產生出來的SQL)。建立資料庫後如要修改Model也沒有問題,可以在修改後重覆上面步驟更新資料庫,流程如下:

update-database -Verbose 可以把整個資料庫重構,這在測試環境當然是沒有問題,可是當在production環境就不行了。上面大大的文章提到可以使用update-database -Script -Verbose自動產生跟資料庫上面diff版本SQL交給DBA去更新,可是怎樣找出跟production環境的diff呢? 我自己是直接改Context檔案裡面的:base("name=Connectionstringname"),然後再輸入一次update-database -script -Verbose就可以得到跟production環境的diff SQL了。 總結: 之前的專案因為有兩個測試環境和production環境,在資料庫結構不停修改的那段時間同步不同環境簡直是場災難,使用自動產生的diff SQL至少可以減少錯誤,而且可以keep track每次修改的History,是個不錯的工具;另外CodeFirst這種開發方式剛開始的時候是有些不習慣,會因為設計不好經常出現錯誤,不過由於資料結構都變成strongly type,在開發上比較不會出現datatype錯誤的問題。
有錯…

[tensorflow] 在 Ubuntu 16.04 LTS中安裝tensorflow

Image
2018年快樂! 新的一年身為程序猿當然要學學現在最夯的深度學習技術, 不然很快就被新鮮的肝淘汰了.

選擇Tensorflow試水溫的原因, 主要是Tensorflow的社群在2017年最活躍, 感覺有問題問現場觀眾也比較容易啊.

在Ubuntu 16.04 LTS安裝Tensorflow遇到的問題:


基本上安裝Tensorflow只要跟著官方教學安裝就好, 我使用的是native pip, 不使用GPU, 所以要先安裝python dev.
然後pip install tensorflow, 看到successfully. 好像很簡單吧, 打開python, 輸入import tensorflow as tf, 果然出狀況了, 出現'tensorflow is not defined'的錯誤.
所以再看看教學, 把Optional的部分也裝一下, 再出現錯誤, 這次是 'tensorflow-1.4.1-cp27-none-linux_x86_64.whl is not a supported wheel on this platform.'有想過不如giveup去打PS4好了.
爬文以後發現原來要把教學的 sudo pip install --upgrade xxxx 改成 sudo python2.7 -m pip install --upgrade  https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.1-cp27-none-linux_x86_64.whl   # Python 2.7, 簡單來說就是在pip前面加上 python<version> -m 然後就順利安裝了, 出現 'Successfully installed backports.weakref-1.0.post1 bleach-1.5.0 enum34-1.1.6 funcsigs-1.0.2 futures-3.2.0 html5lib-0.9999999 markdown-2.6.11 mock-2.0.0 numpy-1.13.3 pbr-3.1.1 protobuf-3.5.1 setuptools-38.4.0 six-1.11.0 tensorflow…