Entries by อ.เอ้ด

2x TP-Link AX53 Setup EasyMESH

AX53-A Setup Main Router ต้องต่ออินเตอร์เน็ต ที่ช่องสีฟ้าให้ได้ก่อน ตั้งค่า WIFI SSID PASSWORD สมัครใช้ TP-Link ID ไปที่ Advanced เลือก EasyMesh ดู Current Moode ว่าเป็น Main Router หรือไม่ AX43-B เข้าไปไม่ต้องตั้งอะไรมาก Time Zone ส่วน SSID PASSWORD ใช้ Default เดิมๆ ไปที่ส่วน Advanced เลือก EasyMesh ซึ่ง Current Moode เป็น Main Router กด Change Mode เลือก Cกด OK รอจนตั้งค่าเสร็จ ปิด Router กลับมาที่ AX53-A […]

ESP32 Data to Google Sheet 2024

สร้าง Google sheet ขึ้น คัดลอก Google Sheet ID

https://docs.google.com/spreadsheets/d/XXXXX Google Sheet ID XXXXX/edit#gid=0

เก็บไว้ 

เลือก ส่วนขยาย (Extension)

Apps Script

จะมีไฟล์ชื่อ รหัส.gs หรือ code.gs คัดลอกไฟล์ต่อไปนี้ลงไป

 

				
					function doGet(e) { 
Logger.log( JSON.stringify(e) );
var result = 'Ok';
if (e.parameter == 'undefined') {
result = 'No Parameters';
}
else {
var sheet_id = 'Google Sheet id'; // Spreadsheet ID
var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet();
var newRow = sheet.getLastRow() + 1; 
var rowData = [];
var Curr_Date = new Date();
rowData[0] = Curr_Date; // Date in column A
var Curr_Time = Utilities.formatDate(Curr_Date, "Asia/Bangkok", 'HH:mm:ss');
rowData[1] = Curr_Time; // Time in column B
for (var param in e.parameter) {
Logger.log('In for loop, param=' + param);
var value = stripQuotes(e.parameter[param]);
Logger.log(param + ':' + e.parameter[param]);
switch (param) {

case 'press1':
rowData[2] = value; 
result = 'OK'; 
break;

case 'temp1':
rowData[3] = value; 
result += ', OK'; 
break; 

case 'deep1':
rowData[4] = value; 
result += ', OK'; 
break;

case 'alti1':
rowData[5] = value; 
result += ', OK'; 
break;  

case 'press2':
rowData[6] = value; 
result = 'OK'; 
break;

case 'temp2':
rowData[7] = value; 
result += ', OK'; 
break; 

case 'deep2':
rowData[8] = value; 
result += ', OK'; 
break;

case 'alti2':
rowData[9] = value; 
result += ', OK'; 
break;  

default:
result = "unsupported parameter";
}
}
Logger.log(JSON.stringify(rowData));
var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
return ContentService.createTextOutput(result);
}
function stripQuotes( value ) {
return value.replace(/^["']|['"]$/g, "");
}
				
			

เอา Google Sheet ID ใส่ในช่อง

โดยฟังก์ชั่น doGet(e)

จะเพิ่มแถวเข้าไปโดย คอลัมน์แรก

โดยส่งข้อมูลผ่าน rowData []

rowData[0] = วันที่ 

rowData[1] = เวลา 

rowData[2] = pres1 ความดัน MS5837 ตัวที่ 1

rowData[3] = temp1 อุณหภูมิ1

rowData[4] = deep1 ความลึก1

rowData[5] = alti1 ความสูงระดับน้ำทะเล1

rowData[6] = pres2 ความดัน MS5837 ตัวที่ 2

rowData[7] = temp2 อุณหภูมิ2

rowData[8] = deep2 ความลึก2

rowData[9] = alti2 ความสูงระดับน้ำทะเล2

Trick หากทำการแก้ไข code ใดๆ หลังจาก save ควรจะ สร้าง Script ID ใหม่

การทดลองว่า Script ทำงานหรือไม่ ให้ลองวาง code ใน browser

 

				
					https://script.google.com/macros/s/XXX Google Script ID XXXX/exec?press1=1000.2&temp1=30&deep1=0.08&alti1=50.2&press2=1000.2&temp2=30&deep2=0.08&alti2=50.3
				
			

ถ้าส่งสำเร็จไม่มีปัญหา Browser จะขึ้น OK, OK, OK, OK, OK

Windows 10 Home Single Language Change Display between English-US and Lang Thai

test on Windows 10 22H2 ENGLISH to THAI mkdir %TEMP%\LPif exist “%SystemRoot%\SysWOW64\” (set “Arch=x64”) else (set “Arch=x86”)for /f “tokens=1-3” %a in (‘reg query “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion” /v ReleaseID’) do @set “Version=%~c”curl -o %TEMP%\LP\th-th.cab “https://filedn.com/lOX1R8Sv7vhpEG9Q77kMbn0/Windows10/language-packs/%Version%/%Arch%/th-th.cab”dism /online /Add-Package /PackagePath:%TEMP%\LP\th-th.cabreg add HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language /v InstallLanguage /t REG_SZ /d 041E /freg add HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language /v Default /t REG_SZ /d 1054 /frmdir /s […]

Node-RED my OLD ARMv7l Raspberry PI

sudo apt updatesudo apt upgradeuname -m เช็คว่า CPU เป็น ARMv7 ขึ้นไปหรือไม่ ติดตั้ง NodeJS และติดตั้ง Node-REDbash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) ตอบ Y ตอนนี้จะเข้าได้ทาง http://x.x.x.x:1880ตั้ง authensudo nano /home/XXX/.node-red/settings.jsเอา comment ออกadminAuth: {type: “credentials”,users: [{username: “admin”,password: “$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.”,permissions: “*”}]},แก้ admin ตามที่ชอบ sudo npm install -g –unsafe-perm node-red-adminสร้าง hash passwordnode-red-admin hash-pwใส่ password จะได้ hash ไปใส่ใน password: ไฟล์ settings.js sudo node-red-stop หรือ sudo […]

Termsrv.dll 10.0.22621.2070

[Main]Updated=2023-07-26Updated=2023-07-27LogFile=\rdpwrap.txtSLPolicyHookNT60=1SLPolicyHookNT61=1@@ -7177,6 +7177,20 @@ SLInitHook.x64=1SLInitOffset.x64=28BA0SLInitFunc.x64=New_CSLQuery_Initialize [10.0.22621.2070]LocalOnlyPatch.x64=1LocalOnlyOffset.x64=9BBA1LocalOnlyCode.x64=jmpshortSingleUserPatch.x64=1SingleUserOffset.x64=1CC29SingleUserCode.x64=ZeroDefPolicyPatch.x64=1DefPolicyOffset.x64=1C045DefPolicyCode.x64=CDefPolicy_Query_eax_rcxSLInitHook.x64=1SLInitOffset.x64=28BA0SLInitFunc.x64=New_CSLQuery_Initialize [10.0.22621.2070-SLInit]bInitialized.x64 =128F4CbServerSku.x64 =128F50lMaxUserSessions.x64 =128F54bAppServerAllowed.x64 =128F5CbRemoteConnAllowed.x64=128F64bMultimonAllowed.x64 =128F68ulMaxDebugSessions.x64=128F70bFUSEnabled.x64 =128F74

MQTT Mosquitto Websockets

สมมุติว่า port mqtt คือ 8883 และ websocket คือ 8083

sudo nano  /etc/mosquitto/mosquitto.conf

 

 

  GNU nano 5.4                                /etc/mosquitto/mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/

#

# A full description of the configuration file is at

# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

per_listener_settings true

pid_file /run/mosquitto/mosquitto.pid

persistence true

persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

connection_messages true

log_timestamp true

log_timestamp_format %Y-%m-%dT%H:%M:%S

include_dir /etc/mosquitto/conf.d

#allow_anonymous false

listener 8883 0.0.0.0

protocol mqtt

allow_anonymous false

password_file /etc/mosquitto/passwordfile

listener 9001 0.0.0.0

protocol websockets

allow_anonymous false

password_file /etc/mosquitto/passwordfile

#socket_domain ipv4

passwordfile example

aaaa:bbb

encrypt file

sudo mosquitto_passwd -U passwordfile

Battery Lithium Polymer LiPo Size mm

Part Number Capacity(mAh) Length(mm) Width(mm) Thickness(mm) 101532 420 32 15 10 101537 500 37 15 10 101552 700 52 15 10 101649 650 49 16 10 101752 700 52 17 10 101929 500 29 19 10 102029 520 29 20 10 102032 600 32 20 10 102034 600 34 20 10 102035 650 35 20 […]

Raspberry PI Zero W install OS ,MQTT without keyboard, monitor

Setup Wifi create wpa_supplicant.conf country=THctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ssid=”your-networks-SSID”psk=”your-networks-password”} save and copy to root or sd drive:\ Enable ssh create ssh.txt save and copy to root or sd drive:\ reset default user password (user:pi password:raspberry) create userconf.txt pi:$6$c70VpvPsVNCG0YR5$l5vWWLsLko9Kj65gcQ8qvMkuOoRkEagI90qi3F/Y7rm8eNYZHW8CY6BOIKwMH7a3YYzZYL90zf304cAHLFaZE0 save and copy to root or sd drive:\ การ Fix ip address sudo nano /etc/dhcpcd.conf กรณี Wireless เพิ่มไปตรงท้ายบรรทัด interface wlan0 […]