一时冲动,入手特斯拉二代电墙(PowerWall 2)

阴雨天,电墙二代艰难的在下午充电

特斯拉(Tesla)电墙二代(PowerWall2)已经上市一段时间了。我早就想装一个,因为家里太阳能发电系统已经用了很多年,省钱效果显著,但早晚高峰时段依旧要依赖电网,而家用电池系统可以弥补太阳能系统的这个缺点,用自家发的电供应早晚高峰家用。

但是获得老婆的赞同票相当不容易。

  • 首先当然是钱!在猫本电墙2 + 备电网关 + 材料 + 人工要14k,这是我比较多家供应商后找到的最好价格。这不是个小数目。
  • 虽然我用电磁炉取代了煤气炉,但是按照自家的用电规律,指望电墙在十年内把自己身价省出来是不现实的
  • 自家所处位置电网还算稳定,一年停电一次两次而已,所以应付断电这个借口也很勉强

关键时刻还得感谢土澳总理,他不停的说,只有火电(烧煤/油/天然气)才能保证家里的灯能点亮。老婆对此很是反感,投资太阳能发电后家里从电网取电量下降了60%左右,再努力一下99%能源自己并不是很遥远的。而像我们一样在屋顶安装太阳能PV板的家庭已经很普遍,只是安装家用电池的还少。况且,感谢COVID这一年没花什么钱在旅游上,于是老婆同意了这笔花销!

然而,貌似和我们有一样想法的家庭还真不少,这是2020年11月的事情。我交了定金后被告知还要等至少二个月才能轮到安装。然后,在漫长的等待中,突然我接到电话说附近有一家取消了安装,所以那个名额可以转给我,幸福来的很突然,我也懒得去想为啥有人会取消安装。

电墙二代未开箱的样子

安装日那天电工天刚亮就来了,午饭前完成安装。

防晒很重要

由于安装位置会晒到下午的太阳,我用木材和遮阳布给电墙做了个罩子,感觉土洋结合的很好。电墙是不怕淋雨的,但高温肯定会折寿的。几周以后再看看我家用电报告,轻松拿到榜首

几点心得:

  • 电墙二代充满后有13.5度电可用,一般保留10%应急后有12度电
  • 所以除了连日阴雨,一般家庭基本可以自给自足的
  • 虽然瞬间最大功率有7KW,但持续最大功率5KW,所以家里总功率避免超过5KW
  • 如果白天因为阴雨充电不足,只要“熬”过晚高峰,即使用电网的电也是相对便宜的
  • 保证电墙联网,否则特斯拉会缩短质保期

🙂

Remove GPS Coordinates From Images Before Uploading to SNS

The recent events(I meant around NYD 2021) in US are quite shocking to me.

  • Trump and his supporters were banned from major SNS platforms
  • The one which didn’t ban them, Parler, got banned from the cloud platforms which Parler runs on, eg. AWS, iOS, Android
  • Parler’s data got scraped by a group of hackers
  • All images Trump supporters uploaded to Parler still have GPS coordinates in them. This could be the best set of evidence in the history

I probably should not post anything meaningful to an SNS but when I still do, here are something I can do to improve protection for privacy.

First the GPS coordinates in photos are added by smart phones and this can usually be turned off. Search for location tags or similar term in camera settings.

For existing images, GPS data can be deleted using following commands in Ubuntu Linux

# install exiftool
sudo apt install libimage-exiftool-perl
# remove GPS data from 1 photo
exiftool -gps:*= my-photo.jpg
# remove GPS data from all .jpg in current directory
find . -name \*.jpg -exec exiftool -gps:*= {} \;

🙂

Fixed gsutil OSError: Permission Denied

When trying to run gsutil in a kubernetes Job as nobody to backup stuff to Google Cloud Storage(GCS), I encountered simple error messages like

OSError: Permission denied

But it didn’t say where or how the permission was denied! It worked fine if the container was run as root user so the problem is not with Google Cloud. I searched around and there are 2 occasions that gsutil needs disk access

The first one is the gcloud profile on local file system. Before using gsutil I have to authenticate with

gcloud auth activate-service-account --key-file=service-account-key.json

The command above will create a CloudSDK configuration directory in current user’s home directory. Obviously nobody doesn’t have a home so this will fail. To fix this, an environment variable can be given like

export CLOUDSDK_CONFIG=/tmp/.gcloud

The next one is harder to find, I suspected an option called state_dir is a place to look at and it turned out I was right. From its source code, the state_dir defaults to .gsutil directory in user’s home directory which is also a problem for nobody user. The fix is to override the option in the gsutil command like this

gsutil -o "GSUtil:state_dir=/tmp/.gsutil" cp $backup_file gs://$gcs_bucket

Now it works as expected. 🙂

Ethereum(Crypto) Mining with Nvidia 3070(Ampere) on Ubuntu 20.04 with Renewable Energy

Snagged a pair of RTX 3070 cards. With only 2 cards this is more like an experiment than an investment.

I’ve done Crypto mining before and since the price is now almost all time high I’ll do that again, but only with my solar energy. Mining with dirty coal power isn’t ethical any more as the climate change has accelerated in the past few years.

To start ETH mining here are some prerequisites:

  • Energy efficient video cards, in this case I got RTX 3070. 3060TI is also a good choice but it was sold out already
  • A desktop computer where you can attach multiple video cards to PCI express slots. But I’m not focusing hardware installation here, ie. not showing how to install the card and connect cables, etc.
  • My OS is Ubuntu 20.04 so I choose t-rex miner which has better support for Nvidia Ampere architecture. The releases can be found here

Here are the steps with which I set up t-rex miner on my Ubuntu 20.04 desktop:

# as root user
sudo -i
# install nvidia 460 driver for Ubuntu
apt install nvidia-driver-460
# install t-rex to /opt/t-rex
mkdir /opt/t-rex
wget https://github.com/trexminer/T-Rex/releases/download/0.19.9/t-rex-0.19.9-linux-cuda11.1.tar.gz
tar -zxvf t-rex-0.19.9-linux-cuda11.1.tar.gz -C /opt/t-rex
# change ownership for security reasons
chown -R nobody:nogroup /opt/t-rex

Now in directory /opt/t-rex there are many shell script(.sh) files. I was using ethermine.org so I had a look at ETH-ethermine.sh, it has:

#!/bin/sh
./t-rex -a ethash -o stratum+tcp://eu1.ethermine.org:4444 -u <ETH wallet address> -p x -w <worker name>

Since I’m proudly an experienced Linux user, I choose to create a systemd service out of that shell script:

# cat /etc/systemd/system/ethminer.service 
[Unit]
Description=Ethereum Miner

[Service]
Type=simple
User=nobody
ExecStart=/opt/t-rex/t-rex -a ethash -o stratum+tcp://us2.ethermine.org:4444 -u <my ETH wallet address> -p "" -w <my worker name, can be hostname>

Restart=on-failure

[Install]
WantedBy=multi-user.target

I choose us2 node as it’s geologically close to me. The user is set to nobody so it won’t cause harm to my system if it wants to. Then the service can be enabled and started with systemctl command:

# reload systemd as a new service is added
# following commands run as root user
systemctl daemon-reload
# enable the service so it starts automatically
systemctl enable ethminer
# start the service
systemctl start ethminer
# check status
systemctl status -l ethminer
# watch the logs
journalctl -f |grep t-rex
Jan 24 13:55:30 hostname t-rex[6621]: 20210124 13:55:30 Mining at us2.ethermine.org:4444, diff: 4.00 G
...

According to other miners online, the TDP of 3070 is better set as 50%(130W), because it can run hotter with higher wattage but won’t make it compute faster. Here’s how I use a cronjob to set TDP to 130W except when I’m playing a game(assuming I’ll stop the miner when playing some game on it).

EDIT: 115W is good enough.

# still as root user, as only root can use nvidia-smi command
# crontab -l
*/10 * * * * /bin/ps -C t-rex && /usr/bin/nvidia-smi -i 0 -pl 115 2>&1 >>/var/log/nvidia.log

This can be verified in t-rex ‘s logs

journalctl -f |grep t-rex
Jan 24 13:55:30 hostname t-rex[6621]: 20210124 13:55:30 GPU #0: Gigabyte RTX 3070 - 52.07 MH/s, [T:53C, P:129W, F:60%, E:404kH/W], 1370/1370 R:0%
# it's running at 129W and temperature is 53 degree and fan speed cruising at 60%

Regarding mining solely with solar energy, there can be 3 approaches:

  • Switch electricity supplier to the renewable-friendly ones such as Ember, so you can use solar energy generated by community and enjoy the low wholesale price and mine crypto when the sun shines. This requires the API access supplier so you know when the energy is from renewables and cheap
  • Install and use your own solar energy to mine crypto when the sun shines. This requires API access from your inverter so know when to start mining with enough solar energy.
  • Install solar and battery so it’s guaranteed to mine with your own solar energy until the battery runs flat of course

I’m going with the last option 🙂