IoT, ESP8266, how to build esptool in win10 to erase the chip flash

 

http://wp.me/ph3BR-20c

 

ESP8266, the IoT chip or WIFI capable MCU, need tool to burn flash and erase flash, esptool is one of maintained tool of which is open source and ready to be build. https://github.com/espressif/esptool

 

C -source code, efficient esptool.exe

The Arduino IDE composited with ESP8266 core community, it uses a general no overhead and efficient esptool.exe (0.4.9) & build by uses pure C source code, latest version is 0.4.11, github here, https://github.com/igrr/esptool-ck

It is likely the same as AVRDUDE when was the boom of AVR chips 10 years ago, so the best way to do that in consideration speed and executable file size, download the C source code and use mingw to compile the C code. Anyway, there is possible two other issues, the C local build has lost the VERSION info, I do not know why or how to fix it, it is perhaps missing something code package, and there is no attempting of repelled copyright or try to exclude source information, this is the first issue, the second, the esptool.exe file size is a lot more less than downloaded one, almost 50% cut, no idea what & why, but the final piece putted together either imported to Arduino IDE 1.8.2 or command line testing, all ok for my work, erase / flash all ok and done.

 

https://github.com/igrr/esptool-ck/releases/download/0.4.11/esptool-0.4.11-win32.zip

 

 

uses C-source code and local build, no VERSION displayed ? download link, https://github.com/igrr/esptool-ck

 

 

 

 

Python -source code, considerable oversize of simple tool, but may rich of GUI, esptool.exe

How to build this tools under win10, uses Python as interpreter, the final file size is considerable huge in MB;

download python 2.7.13 for windows, https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi

install python, [advance] [compile script to byte code], select include python to path

open cmd,

type

 python 

and enter, if see this, python installation is done

 

type

 pip install esptool 

and enter, if seeing this, esptool is build and done, type

 pip install –upgrade esptool 

later on for future upgrade,

 

connect esp-01, esp-12 or NodeMCU something to your PC, check the com port number, i.e. mine is com8

type

 esptool.py --port com8 --baud 74880 erase_flash 

, will erase esp8266 entire SPI flash, or

type

 esptool.py -p com8 -b 74880 erase_flash 

, the same effect, read this for detail of how to uses it, https://github.com/espressif/esptool#usage

 esptool.py -p com8 read_mac 

or this read MAC, the page above is not correctly to describe this at esptool 2.0

 

 

this is going to build a complete executable file esptool.exe for Windows, but do not know how to do that yet,

type

 pip install pyinstaller 

, it will download and install new program. in case you do not like it, type

 pip uninstall pyinstaller 

this is webpage and described how to uses pyinstaller, https://www.esp32.com/viewtopic.php?t=1029

here is my try and success, create my.bat, adjust path of the esptool.py found, and python path, the single esptool.exe is built about 3MB, done after run my.bat

rmdir /s /q build_tmp
mkdir build_tmp

# use python, pip install pyinstaller first
# find and adjust path for esptool.py
# 2017-JUN-17, test done, built esptool.exe success
# REF : https://www.esp32.com/viewtopic.php?t=1029

C:\Python27\scripts\pyinstaller ^
--onefile ^
--specpath build_tmp ^
--workpath build_tmp\build ^
--distpath build_tmp\dist ^
C:\Python27\Lib\site-packages\esptool.py

# Output: build_tmp\dist\esptool.exe

# Typical esptool.exe location used by Arduino-ESP32:
# C:\Users\%USERNAME%\Documents\Arduino\hardware\espressif\esp32\tools\esptool.exe

 

 

 

this is another GUI front end for esptool, however, I am not be able manage to get it works as no idea how to install or to compile this nodemcu-pyflasher, https://github.com/marcelstoer/nodemcu-pyflasher

type

 pip install wxpython 

, install new software

As the developer is actively update his mater pieces about 2 days ago, so to open an issue of how to do that if uses pip for installation would work, because upon win-bat build under win10, the executable file size just huge enough over 14MB, anyway it has been rendered useless as fatal error of failed on nodemcu-pyflasher.py, here is the question, https://github.com/marcelstoer/nodemcu-pyflasher/issues/17

 

HD44780 LCM battery gauge and symbol design

http://wp.me/ph3BR-1ZJ

 

 

xiaolaba_LCM_battery_symbols.jpg

 

The HD44780 LCM or compatible, contain 8 RAM locations for custom symbols to be build or display.

some technical aspect of how to and why to do that, to read these two web pages of which is the most used references and informative.

Reference:

http://www.circuitvalley.com/2012/02/lcd-custom-character-hd44780-16×2.html

https://omerk.github.io/lcdchargen/

 

 

To understand how to obtain a table of special char and display to HD44780 LCM, it is the basic idea,

HD44780 customer char battery gauge.JPG

 

example of code to define two battery symbols, one is 13% charge, the other is 88% charge, why 13% of each step ?

100% / 8 step, = 12% / step = around 13%, that is,


byte bat_13%[8] = { 0xe, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f};

byte bat_13%[8] = {
0b01110, //0x0e
0b11011, //0x11
0b10001, //0x11
0b10001, //0x11
0b10001, //0x11
0b10001, //0x11
0b11111, //0x11
0b11111 //0x1f
};



byte bat_88%[8] = { 0xe, 0x1b, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};

byte bat_88%[8] = {
0b01110, //0xe
0b11011, //0x1b
0b11111 //0x1f
0b11111 //0x1f
0b11111 //0x1f
0b11111 //0x1f
0b11111 //0x1f
0b11111 //0x1f
};

 

 

Demo of how the code works.

h_ttps://youtu.be/hj6JJ6AlVHE

 

Finally, to build a complete test program and to see the resultant, also the demo of battery charging with symbol changing, like animation, you put different battery symbol to a fix location for display, it looks like charging of a battery.


/*
xiaolaba, 2017-JUN-12
UNO, Arduino 1.82
Demo my own battery gauge and symbol.
use a 16x2 LCM display, Hitachi HD44780 compatible
LiquidCrystal library driver.
*/

#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
//modified 2013/may/11, xiaolaba
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // change D12, D11 to D7, D6, because Atmega328p D12 = MISO, D11 = MOSI, may interfere with max6675 SPI, test ok

// ref: http://omerk.github.io/lcdchargen/
// build my degree symbol
byte degreeC[8] = {
0b00000,
0b10000,
0b00110,
0b01001,
0b01000,
0b01000,
0b01001,
0b00110
};



// xiaolaba, custom battery gauge symbols, 13% - 100%, 8 steps
const byte bat_13[8] = { 0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f};
const byte bat_25[8] = { 0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x1f};
const byte bat_38[8] = { 0xe, 0x1b, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x1f};
const byte bat_50[8] = { 0xe, 0x1b, 0x11, 0x11, 0x1f, 0x1f, 0x1f, 0x1f};
const byte bat_63[8] = { 0xe, 0x1b, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};
const byte bat_75[8] = { 0xe, 0x1b, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};
const byte bat_88[8] = { 0xe, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};
const byte bat_100[8] ={ 0xe, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f};



// xiaolaba, custom battery gauge symbols, one table only, 13% - 100%, 8 steps
const byte battery_symbols[64] = {
0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f, // battery charge, 13%
0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x1f, // 25%
0xe, 0x1b, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x1f, // 38%
0xe, 0x1b, 0x11, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, // 50%
0xe, 0x1b, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, // 63%
0xe, 0x1b, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, // 75%
0xe, 0x11, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, // 88%
0xe, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f // 100%
};

// LCM line1 and line2, easy for human
#define line1 0
#define line2 1

void setup()
{
// set up number of columns and rows of LCM, 16 colume x 2 rows
lcd.begin(16, 2);

// create 8 battery symbols, custom characters, one by one, write to LCM CGM RAM
// 100% by 8 steps, each step about 13% increament
// simple way
lcd.createChar(0, bat_13); // create the first custom battery symbol, 13%
lcd.createChar(1, bat_25); // second battery symbol, 25%
lcd.createChar(2, bat_38); // so on...
lcd.createChar(3, bat_50);
lcd.createChar(4, bat_63);
lcd.createChar(5, bat_75);
lcd.createChar(6, bat_88);
lcd.createChar(7, bat_100);
//lcd.createChar(7, degreeC);

lcd.setCursor(0, line1); //move to position 0, line 1

// write the battery gauge symbol one by one to the LCM
lcd.write((uint8_t) 0);
lcd.write((uint8_t) 1);
lcd.write((uint8_t) 2);
lcd.write((uint8_t) 3);
lcd.write((uint8_t) 4);
lcd.write((uint8_t) 5);
lcd.write((uint8_t) 6);
lcd.write((uint8_t) 7);

//lcd.setCursor(8, line1); //move to position 8, line1
lcd.print("xiaolaba"); // Print a message to the LCD.



lcd.setCursor(0, line2); //move to position 0, line2
lcd.print("hi,line"); // Print a message to the LCM, final display "hi,line2"
lcd.print((uint8_t) 2); //print integer 2 to LCM, why typecast? see: http://arduino.cc/forum/index.php?topic=74666.0

// create & write 8 battery symbols, custom character, one by one, programable way
for ( int i = 0; i < 8; i++) {
lcd.createChar(i, battery_symbols + i*8 ); // create one symbol at a time
lcd.setCursor(i+8, line2); //move to next position at line2
lcd.write((uint8_t) i); //write the symbol to LCM
}

}

void loop()
{
//demo battery charging status
for ( int i = 0; i < 8; i++) {
lcd.setCursor(7, line1); //always point to position 7, line1
lcd.write((uint8_t) i); //write 8 battery symbols to LCM, one by one
delay(200);
}

}

 

 

complete project is able to download here, again, the GOOGLE DRIVE,

https://drive.google.com/drive/folders/0B3YrRYrhHTqzWkRPY2FOUEh1YUE

 

 

DS3231, RTC 實驗

http://wp.me/ph3BR-1Zp

 

 

昨天收到貨, 實驗了 DS1302, LCD 時鐘實驗, http://wp.me/ph3BR-1Zj

 

今天收到另外的一種 DS3231, 抓緊時間測試一下, 樣品單價比較高, 等批量貨到就不用匆忙寫碼了.

繼續抄抄寫寫, 抄來的源碼, 改一改, 方便觀察實驗結果.

用 UNO, 四條連線,

SDA – A4

SCL – A5

VCC – VCC

GND – GND

 

DS3231-test-ok

 

 

 

同樣, 使用 setRTC 編譯燒錄一次, 再禁用 setRTC 並編譯燒錄一次, RTC 時鐘就設定到下面預設的時日, 直到拔掉鈕扣電池.


//The following lines can be uncommented to set the date and time
//setRTC();

 

 

要預設你的自己的時間, 修改這個位置

// preset the date to DEC,31,2098
#define _year 2098
#define _month 12
#define _day 31
#define _weekday WEDNESDAY
// preset time to 23:59:55
#define _HH 23
#define _mm 59
#define _ss 55

 

 

 

俺自己的完整源碼,




#include <DS3231.h>

// DS3231_Serial_Easy
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// A quick demo of how to use my DS3231-library to
// quickly send time and date information over a serial link
//
// To use the hardware I2C (TWI) interface of the Arduino you must connect
// the pins as follows:
//
// Arduino Uno/2009:
// ----------------------
// DS3231: SDA pin -&gt; Arduino Analog 4 or the dedicated SDA pin
// SCL pin -&gt; Arduino Analog 5 or the dedicated SCL pin
//
// Arduino Leonardo:
// ----------------------
// DS3231: SDA pin -&gt; Arduino Digital 2 or the dedicated SDA pin
// SCL pin -&gt; Arduino Digital 3 or the dedicated SCL pin
//
// Arduino Mega:
// ----------------------
// DS3231: SDA pin -&gt; Arduino Digital 20 (SDA) or the dedicated SDA pin
// SCL pin -&gt; Arduino Digital 21 (SCL) or the dedicated SCL pin
//
// Arduino Due:
// ----------------------
// DS3231: SDA pin -&gt; Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
// SCL pin -&gt; Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
//
// The internal pull-up resistors will be activated when using the
// hardware I2C interfaces.
//
// You can connect the DS3231 to any available pin but if you use any
// other than what is described above the library will fall back to
// a software-based, TWI-like protocol which will require exclusive access
// to the pins used, and you will also have to use appropriate, external
// pull-up resistors on the data and clock signals.
//



// Init the DS3231 using the hardware interface
DS3231 rtc(SDA, SCL);

void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}

// Initialize the rtc object
rtc.begin();

// The following lines can be uncommented to set the date and time
//setRTC();
}

// xiaolaba, routine change, easy for setup RTC.
//https://xiaolaba.wordpress.com/2017/06/06/ds3231-rtc-%e5%af%a6%e9%a9%97/
void setRTC()
{
// preset the date to DEC,31,2098
#define _year 2098
#define _month 12
#define _day 31
#define _weekday WEDNESDAY
// preset time to 23:59:55
#define _HH 23
#define _mm 59
#define _ss 55

rtc.setDOW(_weekday); // Set Day-of-Week
rtc.setTime(_HH,_mm,_ss); // Set the time (24hr format)
rtc.setDate(_day, _month, _year); // Set the date to month,day,year
}



void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");

// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");

// Send time
Serial.println(rtc.getTimeStr());

// Wait one second before repeating 🙂
delay (1000);
}

ASUS, tech support or what ?

http://wp.me/ph3BR-1Za

 

行業內都知道, 網路世界很多殭屍電腦, 無時無刻想要入侵, 特別某些病毒爆發的時段特別驚人, 每秒一次算是小兒科的. 行業內人士都知道這樣的問題存在, 不過有時候還是需要從遠端遙控設備的, 因此近年一般IT業界的都建議用 SSH 遠端登入, 所以 DROPBEAR 的服務會攔截一些暴力入侵的亂捅的情況.

 

最近看到有 LOG 到這個問題, 每秒鐘在嘗試撞帳號密碼, 內定阻止屏蔽入侵的 IP 只有 5 分鐘, 然後又再次被同一個外面的 IP 嘗試入侵, 所以反映給 ASUS, 希望他們提供一個比較簡單的方案, 讓一般使用者可以容易設定, 例如允許加長這種對惡意 IP 的攔截的屏蔽時長, 或者直接給她加到5個小時, 好讓一般人都容易或完全不需要處理而不需要時刻召喚 LINUX 的高手下山. 結果反映了半天, 是有人在跟進, 但只得到看來不太理解他們到底要幹甚麼的回應, 難道 ASUS TECH SUPPORT 現在不想拿一個自有的產品去實驗嗎? 還是有些外圍不該知道的小細節 ? 不外乎就是 DROPBEAR / SSH / IPTABLE 等等有關的設定,  真有必要知道機器管理的登入帳號和密碼才可以繼續處理? 不要開玩笑了, 來個真正的處理問題的高手好嗎…..

 

都圖文並茂的顯示了 DROPBEAR 攔截的訊息, 也擺顯了是 ASUS 的產品和使用線上自動更新的最新 FIRMWARE, 也查得在保固內的產品, 怎樣還這樣問? 實在不理解了. 這個故事, 很雷同一個熟悉的業務代表的一樁軼事, 偶然買產品的一個客戶, 聽市場上有產品供應商說, 塑膠可以泡特別藥水就會有防靜電的效果, 因此汙染了高級的航天用零件的製造, 這個比較在打混的業務就馬上發信, 向製造端查詢自家產品有沒有用類似藥水影響這個人客, 結果製造端的人回答很妙, 本廠專出產菜籃子, 沒本錢泡藥水, 成本太高. 然後那個業務就像一台十分奢華但是有機的傳真機, 把那串文字毫不修飾原狀足本的轉給查詢的人客, 好像自家賣甚麼產品也不太清楚的樣子. 不論你幹的爽不業, 業務代表客服人員是專業的, 並不需要變成奢華但是有機的傳真機. 大公司是像大象一般, 看來公司大了就真的是大象了.

看來不該再花時間在這些有機的傳真機上面, 再次遇到 ASUS 這樣的傳真機服務, 或許, 如果真不明白看不懂就去請教內部懂得的人, 最好能維持公司應有的專業形象.

 

ASUS TECH SUPPORT OR WHAT

 

 

 

ASUS TECH SUPPORT OR WHAT

 

 

 

 

 

 

 

 

Win10 64 bit, Dev-C++ 5.11, recipe for target ‘main.o’ failed

http://wp.me/ph3BR-1YW

 

Win10 64 bit, Dec-C++

以為很容易, 可是事與願違

想做個簡單的小工具, 借用 OpenCV, 需要設定 Microsoft Visual Studio, 結果沒成事, 編譯時報錯一堆, 無力解決

 

OpenCV VS NG

 

 

後來看到人家教學用 Dev-C++, 心想一試, 先來安裝 devcpp-4.9.9.2_setup.exe, 不行編譯, 卸載刪除.

找到有人說專用給 Win10 的 Dev-C++ 5.11, 試試看, g++ 無法啟動…………

結果同樣, 還是沒解決, 到底甚麼問題引起的呢????

Dev-C++ 5.11 W10, NG

 

 

鐮刀基本不存在, 那就甭想割稻子

所以無功而返……..

所以計畫暫時落空…….

求助, https://sourceforge.net/p/orwelldevcpp/forums/compiling/thread/97319a5e/

 

 

Dev-C++ 5.11, error log


Compiling project changes...
--------
- Project Filename: C:\myProject\Project6.dev
- Compiler Name: TDM-GCC 4.9.2 64-bit Release

Building makefile...
--------
- Filename: C:\myProject\Makefile.win

Processing makefile...
--------
- Makefile Processor: C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\mingw32-make.exe
- Command: mingw32-make.exe -f "C:\myProject\Makefile.win" all

g++.exe -c main.cpp -o main.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"

C:\myProject\Makefile.win:28: recipe for target 'main.o' failed

mingw32-make.exe: *** [main.o] Error -1073741502


Compilation results...
--------
- Errors: 0
- Warnings: 0
- Compilation Time: 52.22s

 

REF:

http://jiannrong.blogspot.tw/2015/07/dev-cdebugcodeblocks-httporwelldevcpp.html

http://www.trickdefined.com/2016/01/install-dev-c-in-windows-10-and-issues.html

http://job.achi.idv.tw/2015/06/13/set-dev-c-5-11-and-mingw-w64-free-c-and-c-compile-programs-on-windows/

http://www.cmlab.csie.ntu.edu.tw/~jsyeh/wiki/doku.php?id=%E8%91%89%E6%AD%A3%E8%81%96%E8%80%81%E5%B8%AB:%E6%95%99%E7%A0%94%E7%A9%B6%E7%94%9F%E5%AD%B8opencv

 

OpenCV

https://sourceforge.net/projects/opencvlibrary/?source=typ_redirect

Dev-C++ 5.11

https://sourceforge.net/projects/orwelldevcpp/?source=typ_redirect

2017年省電燈泡購買指南, 試用樞紐分析表的結果

http://wp.me/ph3BR-1YE

公布省電燈泡壽命及光束維持率檢測結果

http://www.ey.gov.tw/News_Content.aspx?n=49559B255B3B9F27&s=D22243E5A388AC80

106-03-31

2017-MAR-31

看過新聞, 也整理了一下公佈的資料, 其實看到就是霧裡看花, 完全沒清楚到底它在說啥. 這裡只是實驗性質, 嘗試運用 PIVOT TABLE 之類的分析工具, 看看這些資料.

引用消保處和行政院有公告統計及測試的數字, 不妨用自己的方法解讀一下裡面的內容, 雖然不會常買省電燈泡, 引用人家做好的統計數字, 用自行分析的方法, 看看這堆數字和文字到底表達了更深層的意義在哪裡. 分析過後, 得到了一些比較有趣資訊, 如果不是作者筆誤, 大概就是真有其事.

首先, 之前看完了新聞, 也看過行政院網站, 坊間的一般的新聞報導就類似, 壽命 亮度不足 26款省電燈泡 騙人…..等等, 對呀, 騙人的就不買. 而俺希望看的是另外一端, 若標示符合的燈泡, 賣價或排列有怎樣呢? 於是就下載了這個統計表格,

「省電燈泡」(第二階段)市場購樣檢測結果彙整表.pdf

http://www.ey.gov.tw/DL.ashx?s=A7BCF6DE0B0FB21B6BC913A7D6029EA50D4ED73A454E6065794330EF72007EA98DEA583F0FB58AD2AA744DC758E2FE8AFF2594ABDCC03F7A7DE5B564BD3DCFE26B7A397D9702296D&u=%2fUpload%2fRelFile%2f1513%2f748793%2f1710f1b6-39a3-4364-8406-cf93429d06b2.pdf

老師常說, 記錄資料不難, 花時間和精神就做到, 但是得到一堆數據以後, 要從裡面找到想看的內幕, 不是每個人都有的功力, 就像葵花寶典, 沒練過就莽談開天闢土, 基本就廢話. 有了人家統計的資料表格, 例如上面提到的那個 PDF 檔案公告公開給下載的, 那就先來努力給他變成一個試算表格式, 有電腦和工具, 半分鐘就完成. 相信原作者也是利用類似的試算表工具來做資料輸入, 最後打印成PDF檔案, 現在要做的就是把它倒轉回去, 不然自己手工輸入一次嗎, 別傻了.

有了試算表的資料, 最簡單不是靠你的眼睛去分析數據, 而是用類似 PIVOT TABLE 的工具幫助分析, 如果不知道甚麼是 PIVOT TABLE, 那聽過 EXCEL [樞紐分析表], 其實就是類似的工具, 它可是協助你成為武林高手的工具之一, 但到底還只是工具, 要依靠運用得宜, 才會有功效.

有了資料, 有了工具, 還是不行, 需先訂下目標, 如果亂鳥投林, 到底要看甚麼都不知道, 那不要繼續. 目標很清晰, 既然人家都做說明了, 其中有部分樣品測試結果不合格壽命達不到2000小時, 那沒必要死盯一盤豆豉找蒼蠅 (拜託, 豆豉, 不要寫成豆鼓好不好), 試試看白麵粉裡找幾顆黑芝麻不是比較容易嗎! 設定目標, 看看合格產品中, 價格品牌型號排列, 如何 !?

所以呀, 就用那個樞紐分析表的結果, 挑選全部項目合格的, 再自動排列一下價格, 就看到期望的統計結果了, 很簡單呀.

看到兩個比較特殊的地方, 其中一點, 兩個不同廠牌的燈泡, 居然用到HLX-23WLT3完全相同型號. 這個沒法解釋. 另外一個, 最底下幾欄 B&Q 的產品單價是0元, 這個容易解釋, 單價的原始資料不是純粹的數字 (例如 129/組), 自動分析抓不到純粹數字, 就給他顯示0元, 自行修訂一下單價就能再作自動分析, 這裡留作家課作業, 喜歡做的就自己試試看. 如果想看標示放光時數和價格的關係, 可能還要自行細分品質結果才可以作自動分析, 不然用眼睛看, 還是霧裡看花.

「省電燈泡」(第二階段)市場購樣檢測結果彙整表-price-list

這裡只是實驗性質, 嘗試運用 PIVOT TABLE 之類的分析工具作功課.

「省電燈泡」(第二階段)市場購樣檢測結果彙整表 樞紐分析表.xls

「省電燈泡」(第二階段)市場購樣檢測結果彙整表.pdf

以上可下載, 打開樞紐分析表不需要密碼, 改動樞紐分析表的話需要密碼.

所有統計資料的來源和統計資料版權屬於行政院, 此處純粹引用做為課業的題材.

-end

 

REF:

http://www.bsmi.gov.tw/wSite/ct?xItem=68968&ctNode=1510

DSL-7740C, 无法关闭 PORT 445, 等着病毒 WannaCry 恶毒的扫射

http://wp.me/ph3BR-1Y5

 

最近几天,满城都报道勒索赎金的蠕虫病毒 WannaCry (WanaCrypt0r 2.0),连微软都第二次破例,给停产3年的XP发布了一个新的补丁避开这个攻击,那意味着这个病毒是全面性的会感染所有 WINDOWS 联网的电脑,严重程度到了极度才会让微软再次破例。好象很可怕,重点说这病毒会扫描全世界任何的 IP,包括PUBLIC IP和LOCAL IP,找到了缺口就加密你的档案,然后勒索BITCOIN (约300美元)才会提供解密的密码,但不保证可以还原你的档案,为了钱也很歹毒。

微软在两天前很婉转的说了这个故事,

https://blogs.technet.microsoft.com/mmpc/2017/05/12/wannacrypt-ransomware-worm-targets-out-of-date-systems/

有人说可以封闭 PORT 139 和 PORT 445 可以拒绝让病毒扫描或入侵。 PORT 445 通常都用在分享网路邻居,台湾的 WINDOWS 版本称之为 {网路芳邻},是带有美丽女性意味的名称,很专门的用途。看了其中一个跑 WIN 10 的电脑里面就有一个使用 PORT 445, 是 EPSON 印表机的分享打印功能,预设是打开可接受,如果这个病毒扫描到这样的机器,并且送来一段恶毒的小程序,刚好你的电脑有开,还没有更新防护,就在完全不知情的状态下中毒等死。

有说可以在路由器和防火墙先关掉这两个PORT,减少漫燃的机会。电脑最好先断开网路,并且手动关闭 {SMB 1.0/CIFS 档案共用共用支援},然后重新开机。最后是把 WINDOWS UPDATE 启动确保有最新的更新,这是2017年3月份微软发布的资讯,有关 SMBv1 的病毒感染问题,

Microsoft Server Message Block 1.0 (SMBv1) server

https://technet.microsoft.com/zh-tw/library/security/ms17-010.aspx

https://support.microsoft.com/ms-my/help/4013389/title

意思就是2017年3月份至今,如果你的电脑没有更新,只要上网就一定会中毒,只差早晚。

 


手动关闭 {SMB 1.0/CIFS 档案共用共用支援} 的方法,

開啟 [控制台],按一下 [程式集],然後按一下 [開啟或關閉 Windows 功能]

  • [Windows 功能] 視窗中,清除 [SMB 1.0/CIFS 檔案共用支援] 核取方塊,然後按一下 [確定] 以關閉視窗。
  • 重新啟動系統。

 

另外,XP 的更新档案 KB4012598,这里有人写了比较详细, https://unwire.hk/2017/05/13/wannacry-wcry/top-news/

说可以自行到微软的网站下载并安装,http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598, 不过呢,只看到到这个,

KB4012598 download error 2017-05-14 15-59-07 的螢幕擷圖

 

 

 

所以有些用家来电话查询要怎样做才好。其中有一个使用中华电信光纤100M,配得数据机是 DSL-7740C,说无法登入,觉得奇怪,遥控试验一下以前可用的两组账号密码,据说打装机以后就没有中华电信的人员到府过, 就实验了两组账号密码,从2014年安装好就一直使用,没有动过,除了user 密码改了自行设定,管理员密码是动不到的,结果是 cht  管理员那组密码无法登入,而普通用户组 user 的那个就正常,说明 TR069 确实是远端遥控的用途,特别是不需要使用者知情的情况底下,中华电信已经分别做过两次固件更新,同时也修改了管理员登入帐号密码,所以那个 cht,chtnvdsl / /chtcdsl / chtsvdsl 就失效了,帐号密码的来源看这个记录,

https://xiaolaba.wordpress.com/2013/07/24/zyxel-p880-%e6%af%94-p874-%e8%bc%83%e5%a5%bd/

https://xiaolaba.wordpress.com/2014/05/19/dsl-7740c-%e4%b8%ad%e8%8f%af%e9%9b%bb%e4%bf%a1-100m-%e7%9a%84%e7%b7%9a%e8%b7%af%e5%88%9d%e6%ac%a1%e4%bd%bf%e7%94%a8/

 

意思就是一般使用者现时无法关闭路由器 DSL-7740C 的 PORT 445。在 Firmware Upgrade 页面显示以下的资讯,不过使用者并不会得到有关的固件或文件,所以不能有所动作,一切都在中华电信的掌控中。

Current Firmware Version :DSL7740C.V6.TR069.20161018
Backup Firmware Version :DSL7740C.N6.TR069.20140915

CHT DSL-7740C, no admin login possible
CHT DSL-7740C, no admin login possible

 

 

 

再回顾2014年装机的记录,不难发现,2014年5月份所用的FIRMWARE是DSL7740C.N4.TR069.20130603

所以按照FIRMWARE的记号推算最后那些数字应该代表版本的年月日,推敲在2016年10月份中华电信最近一次遥控更新了FIRMWARE或者管理员的帐号密码,

20161018
20140915
20130603

既然这个门道没了那只有退后一级,在这个中华电信的小乌龟后面的路由器做设定修正,看看关闭 PORT 445 如何。