2025年8月11日月曜日

フラットLANケーブルの再敷設

夏休み3日目、梅雨のような(梅雨より激しい雨だけど)雨続きで外の作業はできないので、懸案だった家の中の作業です。

以前、新型コロナの在宅勤務対応で、無線LANアクセスポイント移設のための有線LAN敷設工事 を行いました。その際、部屋の隅に両面テープで固定して這わせたLANケーブルが所々剥がれ始めてしまい、両面テープに埃が付着して見栄えが悪く、かみさんから苦情がでていた。

前回は10mm幅の両面テープを縦に半分の5mm幅に切って、かつ5cm位の長さにして細かく貼っていた。半分に切るのは面倒だなと思っていたらプラスティック障子紙を貼ったときに残っていた5mm幅の両面テープがあることを思い出した。

以下は貼り直した後の写真ですが、床と巾木の境にある黒い線がフラットタイプのLANケーブル。リビングからダイニングに向かって敷設したところ。角は少し膨らむのは仕方ない。


以前の両面テープ痕をIPA(イソプロピルアルコール)で剥がして掃除してから、再度貼り付け。 フラットLANケーブルにピッタリの5mm幅で、かつ強力なので以前のものよりよい感じです。



明日以降も今週一杯雨や曇りで梅雨のような予報。涼しいのはいいけど、たまには夏らしく晴れて欲しい。

2025年8月10日日曜日

LINE Messaging APIで3Dプリント終了通知

天気予報通り朝から雨模様。少し涼しくなりました。昨日の作業疲れと腰痛で午前中は横になってボーっと過ごしてしまいました。

午後から気力を振り絞り 3Dプリント終了通知ガジェットのLINE Notify から LINE Messaging APIへの移行作業です。写真の左に写っているフォトインタラプタが3Dプリンタの印刷完了時にヒートベッドが初期位置に戻ったときに遮られてメッセージを通知します。


以下はテストなので、監視開始とプリント完了の時間間隔が短いです。トラブルもなく無事に動いてよかったです。

ハードなどの詳細は下記の記事参照。当初は終了の検出にフォトリフレクタを使っていましたが、窓の近くで使うと誤動作したのでフォトインタラプタに変更しました。

今回、ハードウェアの変更はなくプログラムを書き換えただけ。中身はESP32とMicroSDスロット、基板の裏面に3端子レギュレータが載っています。

LINE Messaging APIの使い方は以下のサイトを参考にさせて頂きました。


ESP32に書き込むプログラムのスケッチは以下の通りです。無保証です。
//---------------------------------------------------------------
//                                                2025.08.10 naka
//                                                2022.02.02 naka
// LINE Dash Button(3Dプリント終了通知用)
// (LINE Messaging API版 2025.08.10)
//
// ・WiFi ssid,password,LINE channel ID, LINE channel passwordは、
//   暗号化してmicroSDに格納。送るメッセージは平文のまま記載。
//  ファイル名:setup.txt
//     暗号化したWiFi ssid, ssid-password, LINE channel ID,
//     LINE channel passwordをそれぞれ1行ずつ順に記載し、
//     5行目に起動時に送るメッセージ、
//     6行目に印刷完了時に送るメッセージを記載。
//  (例)
//    &D/)%X/C04S
//    *%/O-J_F$##5)CK`(%
//    #T('KLCS(76+$&E
//    $7L:#D?*$#8(#(:.$C7(9C'$)45J9C,5$CS&7(84$C7
//    3Dプリンタ監視開始
//    3Dプリント完了!
//---------------------------------------------------------------
#include <WiFi.h>
#include <HTTPClient.h>  
#include <SD.h>

#define SD_CS 16 // SD card chip select
#define SW    GPIO_NUM_13  // フォトインタラプタ(3D印刷完了検知)
#define LED_G 25
#define LED_R 27

#define ON  1
#define OFF 0

#define FILENAME "/setup.txt"

// LINE messaging API
const String token_url = "https://api.line.me/oauth2/v3/token";
const String msg_url   = "https://api.line.me/v2/bot/message/broadcast";

char ssid[64],password[64],channel_id[64],channel_pw[64],message1[128],message2[128];
int sw_newest;

// ssid,pw,channel id,channel pwを暗号化したときのキー
char* crypt_key = "Open Sesame";

void setup()
{
  pinMode(SW,INPUT_PULLUP);
  pinMode(LED_G,OUTPUT);
  pinMode(LED_R,OUTPUT);
  led_green(OFF);
  led_red(OFF);
  sw_newest = digitalRead(SW);
  if (read_setup_file(FILENAME)) {
    blink_red(10);
    esp_sleep_enable_ext0_wakeup(SW, LOW);
    esp_deep_sleep_start();
  }

  // GPIO割り込みピン設定
  gpio_wakeup_enable(SW, GPIO_INTR_LOW_LEVEL);
  // 動作確認のために動作開始メッセージを送る
  wifi_connect();          // WiFi接続
  send_msg2line(message1); // LINE notifyに1行目のメッセージ(監視開始)を送る
  wifi_disconnect();       // WiFi接続解除
  led_green(ON);

  // GPIO割り込みでのsleep復帰を有効化
  esp_sleep_enable_gpio_wakeup();
}

void loop(){
  // スリープ開始(復帰はこの後ろ)
  esp_light_sleep_start();
  
  wifi_connect();          // WiFi接続
  send_msg2line(message2); // LINE notifyに2行目のメッセージ(印刷終了)を送る
  wifi_disconnect();       // WiFi接続解除
  led_green(ON);
  while(!digitalRead(SW));
  delay(100);              // チャタリング対策
}

int sw_FallingEdge() {
  int prev = sw_newest;
  sw_newest = digitalRead(SW);
  return prev & ~sw_newest;  // change 1 -> 0
}

void led_green(int onoff) {
  if (onoff==ON) digitalWrite(LED_G,LOW);
  else           digitalWrite(LED_G,HIGH);
}

void led_red(int onoff) {
  if (onoff==ON) digitalWrite(LED_R,LOW);
  else           digitalWrite(LED_R,HIGH);
}

void wifi_connect() {
    WiFi.begin(ssid, password);
    int onoff = 0;
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        if (onoff==0) led_green(ON);
        else          led_green(OFF);
        onoff ^= 1;
    }

    // 以下5行は、普通は不要なハズ
    IPAddress gateway(192,168,0,1);
    IPAddress subnet(255,255,255,0);
    IPAddress dns1(8, 8, 8, 8); // Google DNS primery server
    IPAddress dns2(8, 8, 4, 4); // Google DNS secondary server
    WiFi.config(WiFi.localIP(),gateway,subnet,dns1,dns2);    

    led_green(ON);
}

void wifi_disconnect() {
    WiFi.disconnect(true);
    led_green(OFF);
}

String get_token() {
    HTTPClient http;

    http.begin(token_url);
    http.addHeader("Content-Type","application/x-www-form-urlencoded");

    String  body = "grant_type=client_credentials&";
            body += "client_id=" + String(channel_id) + "&";
            body += "client_secret=" + String(channel_pw);
    int httpCode = http.POST(body);
    String token="";
    if(httpCode == 200){
        String S = http.getString();
        int i = S.indexOf("\"access_token\"");
        if((i>0) && (S.substring(i+15, i+16).equals("\""))){
            token = S.substring(i+16, i+16+174);
        }
    }
    else{ 
          blink_red(10);
          led_red(OFF);
    }
    http.end();
    return token;
}

void send_msg2line(String message) {  
    led_red(ON);

    String token = get_token();
    if (token.length()!=174) { // エラーなので赤色LED 5回点滅
      blink_red(5);
      led_red(ON);
      return;
    }
  
    HTTPClient http;
    http.begin(msg_url);
    http.addHeader("Content-Type","application/json");
    http.addHeader("Authorization","Bearer " + token);
    String json = "{\"messages\":[{\"type\":\"text\",\"text\":\"" + message + "\"}]}";
    http.POST(json);
    http.end();

    led_red(OFF);
}

void blink_red(int no) {
  int onoff = 1;
  int i;
  for (i=0; i<no*2 ;i++) {
    delay(100);
    if (onoff==0) led_red(ON);
    else          led_red(OFF);
    onoff ^= 1;
  }
}

int read_setup_file(char* fileName) {
  char  buff[128];

  if (!SD.begin(SD_CS, SPI, 24000000)) return 1;

  File setupFile = SD.open(fileName,FILE_READ);
  if (setupFile) {
    readLine(setupFile,buff);
    decrypt(ssid,buff,crypt_key);
    
    readLine(setupFile,buff);
    decrypt(password,buff,crypt_key);
    
    readLine(setupFile,buff);
    decrypt(channel_id,buff,crypt_key);
    
    readLine(setupFile,buff);
    decrypt(channel_pw,buff,crypt_key);

    readLine(setupFile,message1);
    readLine(setupFile,message2);
    setupFile.close();
  }

  return 0;
}

// microSDから1行読み取る
int readLine(File fp, char *buff){
  int i = 0;
  if(!fp.available()) {
    return -1;
  }
  while (fp.available()) {
    char c = fp.read();
    if (c=='\r');
    else if (c=='\n') break;
    else buff[i++] = c;
  }
  buff[i] = 0;
  
  return i;
}

void decrypt( char*a, char*b, char* key) {
  char x[128];
  int i,j,k,m;
  // ascii文字をbinaryに戻す
  for(i=0; b[i]!=0; i++) {
    x[i] = b[i] - (int)'#';
  }
  m = i - 1;

  // 6bit -> 8bit
  j = 0;
  for(i=0; j<m ; i++) {
    switch (i%3) {
      case 0:
        a[i] = (x[j]&0x3F)<<2 | (x[j+1]&0x30)>>4;
        j++;
        break;
      case 1:
        a[i] = (x[j]&0x0F)<<4 | (x[j+1]&0x3C)>>2; 
        j++;
        break;
      case 2:
        a[i] = (x[j]&0x03)<<6 | x[j+1]&0x3F;
        j += 2;
        break;
    }
  }
  m = i;
  
  k = 0;
  int n = strlen(key);
  for (i=0; i<m; i++) {
    a[i] ^= key[k++];
    k %= n;
  }
  a[i]= 0;
}
//---------------------------------------------------------------
// EOF
//--------------------------------------------------------------- 


MicroSDにはテキストファイル(setup.txt)を格納してあり、中に暗号化したWiFiのアクセスポイント名(SSID)、パスワード(SSID-PW)、LINE Channel ID、Channel IDパスワード、及び平文の起動時のメッセージ、印刷終了時のメッセージを記載してあります。文字コードはUTF-8です(Arduino-IDEがUTF-8なので)。Windows10のメモ帳はデフォルトでUTF-8のようです。

暗号化前のテキストファイルは以下のような感じ。


後述のプログラムで暗号化すると以下のようになります。ファイル名は元のファイル名に_crypt.txt が付いたものになるので、これをsetup.txtという名前に変更してmicroSDのトップ階層に置きます。


microSDに保存するテキストの暗号化プログラムはWindowsのターミナルから以下のように使います。入力ファイルの始めの4行のみ暗号化し、そのあとは平文のまま出力します。"Open Sesame"は任意の文字列で暗号化のキーになります。スケッチ内にも同じものを記載します。

    encrypt.exe "Open Sesame"  setup_Plain.txt

encrypt.exeプログラムをzip圧縮して、certutilでテキストにエンコードしたものが以下です。ウィルススキャン済み。ターミナルから以下のコマンドでzipに戻せます。

    certutil -f -decode [Input Filename] [Output Filename]

-----BEGIN CERTIFICATE-----
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
AQA5AAAAXYkAAAAA
-----END CERTIFICATE-----


2025年8月9日土曜日

夏休み初日は草むしりや掃除でヘトヘト

今日も暑かったですが、明日から雨が続きそうなので懸案だった庭の草むしり植木の剪定などで汗をかきました。猛暑のためか雑草の伸びが激しくて、確か6月下旬にもやった記憶があるのですが。熱中症が怖かったので帽子をかぶり、適宜スポーツドリンクを飲みながらの作業です。日に焼けました。

植えたわけでもないのに急にテッポウユリが咲き始め、庭のあちらこちらに白い花が目立ちます。ユリは球根で増えるものかと思っていましたが、種子でも増えるようです。どこからか飛んできたのか、鳥が運んできたのか。取り合えずユリはそのままにして雑草取り。


他に家の外回りなども掃除してヘトヘトです。そのあと夏休み中の食材の買い出しにでかけたりして一日が終わりました。という訳でLINE Messaging APIを使った工作は明日以降です。

2025年8月8日金曜日

LINE Messaging APIを試してみた

以前、LINE notifyというLINEのサービスを使って、ESP32からLINEにメッセージを送り、3Dプリンタの印刷完了を通知するというガジェットを作った。3Dプリントは結構印刷時間がかかるので便利に使っていたけど、2025年3月末でLINE Notifyがサービス終了となって使えなくなっていた。

同じようなことができるサービスとしてLINE Messaging APIがあったけど、腰が重くて中々移行できず。しかし、3Dプリントの終了通知がないと不便なので、ここに来てようやく移行してみることに。

LINE Messaging APIはLINEのビジネスIDを登録して、そのIDにLINE公式アカウントを作ると使えるようになるらしく、よくわからないままやってみた。ちなみに月に200通までは無料らしいので3Dプリンタの開始・終了通知くらいなら十分。

取り合えず、ESP32開発キット上で簡単なスケッチを書いて、メッセージが送れるかのテストを行う。スケッチはネットにあったものを参考にさせて頂いた。感謝!!

明日から夏休みなので、3Dプリント終了通知ガジェットに組み込んでみる予定。うまく行ったらスケッチなどを公開します。

それにしても連日暑くて、職場でも家でも終日冷房の中で過ごしているので少々冷房病?夏バテ気味です。作業する気力が続くか心配ですが、ここでやらないと一生できなさそうなので頑張る所存。

2025年7月26日土曜日

猛暑の中、インターバルタイマ製作

猛暑の日々が続いていますが、一応なんとか過ごしています(生存報告)。それにしても暑い。

AC100Vを1秒単位でオンオフ設定できるインターバルタイマ をサイトで細々と受託製作していますが、このところご依頼を多く頂き、一部の部品在庫が無くなりました。そこで小型の液晶表示モジュールPICマイコンを注文したところ、少し値上がりしていた。食料品以外もインフレは着実に進んでいますね。トランプ関税で益々加速しそう。でも不良在庫が怖くて大量には事前購入できないです。


写真の下側に写っている基板は不足部品を載せる前まで組み立てた基板です。工作部屋にはエアコンがないので明日の午前中、少しでも涼しい時間に組み立てようと思います。

新しい工作には着手できていません。色々やりかけの工作はありますが、イマイチ気分が乗らずに手が付かない状況。お盆の夏休みまであと2週間。酷暑で通勤だけでも疲れますが、夏休みを餌に自分に鞭打ちます。

2025年7月13日日曜日

アマゾンプライムデーセールに踊らされて

 アマゾンのプライムデーに踊らされて散財しました。

今週後半は法事があって帰省したのですが、帰省のたびにWiFiがない(光インターネットがない)ことが悩みでした。私のiPhoneやiPadの契約は月々1GBだし、かみさんもよく知らないけど数GBで、ちょっとネットを彷徨うとすぐにギガがなくなる。いつの間にかギガという言葉が、通信量を意味するものになってきた。言葉は生きてる。

閑話休題、8月になればお盆の帰省で兄弟も集まるので、みんなで使えるポケットWiFiを導入することにした。1年間有効で100GB使え、本体込み価格が12,500円、同時接続10台まで。ギガがなくなったらオンラインで追加購入できる。

電源入れたらすぐに繋がり、液晶画面に表示されたQRコードをiPadのカメラで撮影したらWiFiの設定が完了した。ギガがもったいないので、ちょっとブラウザを開いただけだけど、遅くない速度で閲覧できた。液晶画面には残り100GBが表示されている。


購入したのは、ディスプレイ付きの新モデル。12,500円だったと思う。今見たらさらに値下げされていた。
【新モデル】国内メーカー直営 ポケット WiFi 『プレミアムチャージWiFi』U20P (日本国内 100GB/365日付) ギガ割引クーポン毎月付与 端末買い切り 契約・クレカ不要 利用分だけ都度チャージ 海外利用可能

旧モデルの方が少し安い。

国内メーカー直営 [U20] 日本100GB/365日付 ポケット WiFi 【プレミアムチャージWiFi】 ギガ割引クーポン毎月付与 端末買い切り 契約・クレカ不要 利用分だけ都度チャージ 海外利用可能


サイズ感は、こんな感じでiPhone12 miniとほぼ同じ。幅が少し広い。充電はUSB TypeCなのでiPadで使っているケーブルが使える。


もう一つ、今まで使っていた扇風機、とくに不具合はないけれど製造が2012年。設計上の標準使用期間6年の2倍を越えた13年経過していていたので、安全を考えて交換することにしました。また、「弱」でも結構な風なので、エアコンと併用していると冷たい風が当たって寒かった。もっと弱い風になることを期待して、DCモータ扇風機を選択。

プライムデーで安かったコイズミ製(プライムデー20%オフの5,580円)を購入。一応、日本メーカですが、製造は中国。静かで弱い風は期待通りでした。電源オンオフや風量調整時の「ピッ」という音がやや大きい。また、首の高さは変更できず、持ち運びの取っ手はないけど、コスパがよいので十分です。


【Amazon.co.jp限定】コイズミ 扇風機 DC期間ター リモコン付き 風量8段階 首振り オン/オフタイマー付き ホワイト KLF-3053/W

さらにKindle Unlimitedの3ヵ月無料キャンペーンもやっていたので登録してしまった。たぶん、期限前に解約すると思うけど、読みたい本が多かったらそのまま継続するかも。


ということで、1万円以上の買い物になったのでポイントも割増しで付いたはず。全くもってアマゾンの思うつぼ。

2025年7月6日日曜日

北海道に梅雨はないと聞いていましたが、、、

今年前半、かみさんが色々と大変だったので慰安を兼ねて、洞爺湖周辺に出かけてきました。慰労旅なので飛行機、ホテル(+食事)、レンタカーを予約し、観光の計画は立てず、その日の気分と天候次第の気ままな旅です。

北海道には梅雨がないというので、7月初めのこの時期を計画しましたが天候には恵まれず、カルデラ湖を囲む峰に建つホテルは滞在中ずっと霧(雲)の中でした。残念。下の写真は最終日の朝、奇跡的に雲が切れたときに洞爺湖を望んだ景色。このあと再び霧に包まれました。

2日目、雨模様でしたが近くの昭和新山有珠山を訪れました。昭和新山は活火山で雨の中、蒸気をあげています。硫化水素の匂いはない。その昔、教科書で見た風景がそのままで少し感動。隣にある有珠山の山頂付近は雲の中で、ロープウェイが吸い込まれて行きました。景色は何も見えないだろうと乗らず。


その後、かつて(今も?)鉄の街と言われた室蘭を経由して、ドリフの歌に歌われた登別温泉へ。大きなホテルが立ち並ぶ想像以上に大規模な温泉街でした。お湯が沸いている地獄谷硫化水素の匂いがして中々の迫力。個人的には温泉は入浴後に汗が引かず、汗まみれになってしまうのであまり好まない。普段も夏はシャワーのみ。

3日目、ホテルは雲の中でしたが、下界に降りてくると晴れてきそうだったので、蝦夷富士と呼ばれている羊蹄山へ。途中、北海道らしい雄大な小麦、蕎麦、ジャガイモ畑を抜けていくと次第に天気もよい感じに。でも山頂付近にはずっと雲が掛かっていました。

この後、再び洞爺湖の近くを抜けたのですが、カルデラの峰は雲の中のまま。海からの水蒸気が山にぶつかり冷えて雲になるのでしょうか。

天候はイマイチでしたが、ホテルの雰囲気や食事はとてもよかったし、気の向くままに観光もして、よいリフレッシュができた旅でした。

羽田に帰ってきたら蒸し暑くて一気に現実に引き戻されました。明日から再び仕事です。

2025年6月22日日曜日

タップスタンド

今日は朝イチで都議会議員選挙の投票へ行ってきました。朝早かったためか全く並ばずに投票完了。この人ならと云った候補者はいなくて消去法で選択。今夜8時からの開票が少し楽しみ。

その後、昨日アリエクから届いたタップスタンド、タッパー?を組み立て。タップを立てるとき、2~3mm位の薄い板だとイマイチ垂直に立たないことが多い。今まではボール盤などを使って垂直を保って立てていたけど、 使い勝手が悪いので専用の治具を購入しました。

緩衝材で個別に包まれたパーツが、さらにまとめた緩衝材+段ボールに包まれて届きました。


緩衝材から取り出した部品一式。


こんな感じで組み立てました。上下にスライドする丸棒の先のドリルチャックにタップを取り付けて、上から押しながら回すというものです。スライド部分にはボールベアリングが入っていますが滑りは悪いです。スプリングが入っているけど、下げたあとで手を離しても戻らない。下げるにも、回すのにも少し力が必要です。

小型のバイス付きのものもありましたが、バイスは持っているので単体で購入。送料含めて3,000円位だったと思います。今のところ使う予定はないのですが、試すのが待ち遠しいです。

今日はさらにこの後、長年ほったらかして巨大化したけどあまり花が咲かないアジサイの剪定などを行い、昨日に続いて疲労困憊。今週末はよく働きました。さすがに疲れて午後は少し横になった。

2025年6月21日土曜日

夏休みのような1日

2週間ほど前に塩漬けして乳酸発酵させたらっきょうを昨夜取り出して一晩塩抜き。今朝は氷砂糖と蜂蜜を入れた調味酢を作り、らっきょうを熱湯に10秒ほど潜らせて殺菌?したのち本漬けです。また1年間楽しめることを期待しています。


らっきょう漬け後は大きくなり過ぎた庭木の伐採です。将来、剪定のために脚立に上がったりすることがおぼつかなくなることを見据えて、立った状態で手が届かなくなる木は庭仕舞いです。

昨年も伐採しましたが、残っていた最後の(我が家としては)巨木を伐採しました。今までで一番幹が太い。倒れた時に周りのものを巻き込まないように、まずは太目の枝をハンディタイプの電動チェーンソーで切って幹だけにしました。その後、大きな電動チェーンソーで幹に受け口(楔形に抜く)を作り、反対側の少し上を水平に切って、最後は押して倒しました。倒す方向をコントロールしたくて最後は人力にした次第。

以下は切り倒した幹と枝のほんの一部。乾燥させて軽くしてから廃棄します。細い枝葉は大きなビニール袋へ入れてゴミ回収に出します。

残った切り株は水平に切り直したのち、φ10mmのドリルで穴を開け、除草剤ラウンドアップを注ぎ込みました。ラウンドアップの残りが少なくて、全ての穴に入れられなかったのでアマゾンで注文。明日には届くらしいので助かる。


日産化学 除草剤 ラウンドアップマックスロード 1L 希釈タイプ

昼食までの3時間ほどの庭仕事でくたくたです。暑かったので熱中症にならないよう、帽子をかぶり、麦茶を飲みながらの作業でした。シャワーを浴びて昼食をとったら、うとうとしてきてなんだか懐かしい感覚が浮かび上がってきました。そう、夏休みのプール後の午後の感覚です。身体は疲れ果て、気怠く、横になったら昼寝が気持ちいい。今日は昼寝はしませんでしたが、心地よい疲れが残った一日でした。水分の摂りすぎでお腹の調子が悪い。

2025年6月7日土曜日

久しぶりの東京タワー

多くの訪日観光客に混ざって、東京タワーを眺めてきました。地下鉄内でもインバウンドを実感。

天気が良すぎて暑い。まもなく梅雨入りでしょうか。


2025年5月30日金曜日

シングルレバー水栓のカートリッジ交換修理DIY

今日は休養のために年次休暇を取ったのですが、急ぎのDIY仕事が入りました。キッチンのシングルレバー水栓カートリッジ交換です。最近、水を止めるときにレバーが途中で引っかかり、意識して完全にレバーを押し下げないと水がポタポタ落ちるようになりました。


以前にもこの症状がでて、しばらくしたら壊れて水漏れするようになったので今回は予防交換です。以前の修理記事は以下。今回は約6年もった。その前は3年強。
以前の記事を参照して水とお湯を混合するカートリッジの型番を確認。KVK MYM純正部品:セラミックカートリッジ・上げ吐水 KPS077AHです。今回アマゾンになくて楽天で購入。5千数百円と前回よりかなり値上がりしていた。昨今、なんでも値上げですね。


パッケージの裏側に載っている交換方法。モンキーレンチは顎が大きく開くものが必要です。


新旧のカートリッジ(左が古いもの)。樹脂の嵌め合わせ部分に隙間ができて広がるようになっていたので、まもなく壊れるところでした。


そろそろ水栓本体を取り換えたいけど、狭いシンクの下に潜って配管を繋ぎ変えるのは大変なので、お茶を濁しています。


2025年5月24日土曜日

植木鉢カバー、組み立て

観葉植物の鉢植え用鉢カバーを組み立てました。昨日、組み立て前に防腐塗料クレオトップを塗り、一晩乾かしてから組み立て。防腐塗料の残量と乾かす場所や作業時間の兼ね合いで、6台中、ひとまず大中小それぞれ1台の計3台。写真奥の方の作業椅子の上に残りの板が見えます。

ステンレスのコーススレッドスクリュー釘で組み立てて、その後もう一度クレオトップで塗装したところ。明日、裏側にゴム足を付けて完成予定です。明日は雨予報なので屋外で鉢植えを入れる作業はできないかな。

クレオトップの残量はギリギリ残り3台分間に合うかな?という感じ。明日組み立て前の塗装をして、来週末に組み立てするつもり。


2025年5月22日木曜日

詐欺スパムメールが酷い

 証券会社の口座乗っ取りがニュースになって久しいですが、証券会社関係のスパムメールが急増しています。

下記は昨日から今日の夕方までに届いたスパムです。SBI証券野村證券松井証券楽天カードなどの他、アマゾンも多い。4行目の東京ガスはスパムではなかったけど間違えてゴミ箱に入れてしまった。振り分けフィルタを使っているけど、すり抜けるメールも多く、目視での確認が必要。

証券会社のセキュリティ強化を促す詐欺メールも多くて、引っかかってしまう人もいるのではないかと思う。スマホでメールを見ていると、詐欺のURLに気付かずタップしそう。逆に本物のメールにも気付かないでスルーしてしまう可能性もある。

PCのメーラでメールを読むときはHTML表示はオフにしてあるので、変なURLはすぐにわかるが、いちいち面倒。メールが連絡手段として使えなくなっている。次世代の通信手段が必要な時代?

2025年5月17日土曜日

久しぶりの木工工作、植木鉢カバー

GWの休みに、冬の間リビングで越冬していた観葉植物を外に出したら強風で倒れまくる。以前にも倒れないように植木鉢カバーを作ったが、全然足りてない。先週、余っていた材料でひとつ追加したが、まだまだ足りません。

昨年作った植木鉢カバー(1),  (2), (3)

今朝は早くからホームセンタにでかけて材料を調達してきました。杉板が10枚で1,700円位、角材は一本400円位。


植木鉢が3種類あるので、それぞれに合わせた寸法で設計。それぞれ1個、2個、3個の計6個作成するつもり。簡単な工作メモを書いて、板取りし、スライド丸鋸でカット。集塵機を繋いでいたのに、やけに切りくずが多いなと思いつつ、カット後に掃除しようとしたら吸塵機のホースが詰まっていて殆ど吸ってないことに気付いた。


植木鉢カバー6個分の材料です。杉板が束ねてあったためか水分が多く湿っていた。このままでは防腐剤を吸い込みそうになかったので、しばらく乾燥させることにしました。

材料は適当に買ってきて、ほんの少し足りなかったけど手元にあったもので何とかなった。手持ちの防腐剤が足りないかもしれない。

続きは来週かな。

2025年4月28日月曜日

GWもカレンダ通り

ゴールデンウィークが始まりましたが、カレンダ通りに仕事です。有給休暇を使って連休にしてもよかったけど、連休中はどこへ行っても混むので違うタイミングで連休を取ろうかと思っています。花粉症もまだ収まってないし。

という訳で、工作時間は後半の4連休にとれるかな?という感じです。最近、再び野暮用もあって中々難しい。若いときはあまり感じなかったけど、歳をとるにつれ、しがらみも顕在化してきて中々自由にならない。もどかしいけど仕方ないか。

トランプ関税でNISA運用もひどいことになって心理的に落ち込むかと思ったけど、そうでもない。まぁ持ち続ければそのうち上がるでしょう。

諸々のことが落ち着いたら旅にでたいと思う今日この頃です。

以上、生存報告でした。

2025年4月13日日曜日

ポータブルソーラバッテリの鉛蓄電池交換

杉花粉のピークが収まり、に移りつつあるようで、ひどい花粉症の症状も少し改善されてきました。例年ゴールデンウィーク頃まで続くのでもうしばらくの辛抱です。ほんとにこの時期は全国的に生産性が低下しているのではないかと思う。

体調が改善されてきたのと、先週 AC100V インターバルインターバルタイマ の製作依頼があったので、電子工作周りの作業を再開し始めています。インターバルタイマは今週も新たな依頼があったので作業中。前にも書きましたがなぜか依頼があると続くことが多いです。一部手持ち部品がなく到着待ち。

昔、防災用に作ったポータブルソーラバッテリ の鉛蓄電池がヘタっていたので交換しました。以前から交換しようと思っていたのですが、冬場はどうせ大して発電しないからいいか、と放置していました。春になり太陽も高くなってきてしっかり発電できるようになったのでようやく交換です。時々スマホの充電などには使っていましたが、幸いなことに災害などでの出番はありませんでした。


サイドカバーを開けるとバッテリが見えます。バッテリに貼ったシールが2016年3月なので丁度9年前ですね。12V12Ahなので、Liイオンのモバイルバッテリ3.7Vに換算すると、約3倍で36,000mAh相当。左奥の銀色の放熱器は12VをUSB 5Vに変換するDDコンバータ、右奥はシガーソケットです。


新品の電圧を測ったら少し低めだったので、安定化電源で充電中。今日は曇りでソーラパネルからの充電は期待できない。


ネームランドで作った2025年4月のラベルを貼ってケースに収めました。古いバッテリの処分が課題。クルマのバッテリ交換時にお店で引き取ってくれるかな?


 次の交換目安は2030年あたりですね。それまで災害などでの出番がないことを願っています。

2025年3月29日土曜日

花粉症がひどいのでChatGPTで遊ぶ

ここ数年で一番ひどい花粉症に苦しんでいます。アレグラのジェネリックを服用し続けていますがあまり効果がありません。効果があってこの状況なのかも知れないけど、効果確認のためにやめる、というのは怖くてできない。

年度末で消滅する有給休暇が残っていたので、今週は殆ど休暇をとってぼーっとしてました。暇だったので本を読もうとしましたが集中できず、しょうもないYouTubeやアマプラを眺めて過ごす日々。リタイア後の老後がこうなるのかと考えたら怖くなってきて、何かしなければと思うが気力がでずそのまま。恐ろしい。

ChatGPT花粉症に悩むおじさんエンジニアの絵を描いてもらいました。ジブリ風にして、と指示したけどコンプライアンス云々でダメでした。最近話題のGPT-4oで問題になっているので対策されたのか? GPT-4oは有料なので試してないです。


メガネが空中にあったり、鉛筆立てに入っているのが箸っぽいとか、歪んだりしてるのはご愛敬。ティッシュの箱の色がキムワイプっぽいのはよく描けている?のか。

続けてお願いすると色々と変わって面白いが、無料の画像生成はすぐに制限にかかってしまいあまり試せない。以下はアニメ風にしてとお願いしたもの。PCにMac風のロゴが付いた。有線マウスなのでMacではないかな? 外部ディスプレイにプログラムっぽいものが表示されている。とくにプログラマとかは指示してないけど、ChatGPTの中ではエンジニア=ソフトエンジニアなのかも。あとティッシュの箱の柄が変わった。


と云うわけで花粉症が収まらないと辛くて何かやろうという気力が沸かない。あと1か月ほどは仕事に行くだけで精一杯の日々になりそう。