🗐 電装工芸日記 - 舞台照明機器の製作とか -

今年は開発案件を進めたい

or 管理画面へ

2024年の投稿[199件](11ページ目)

2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 eth0 と eth1 に Art-Net のIPアドレスを設定する bashスクリプトです。
 体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。utf-8でも全角空白はエラーの元です。
 Art-Net の OEMコードを取っていませんので、0x29DA を勝手に使ってます。身近な器具で使われていないのと「肉だ」の語呂です。製品化する際には OEMコードを取得します。

set_artnet_ipaddress_eth0eth1.sh

// RaspberryPi:4B
// OS:RaspberryPiOS(bookworm) 32bit-Lite
// パーミッション:755
// bashスクリプトですのでファイルに実行権限を与え、Sudo で実行してください。

#!/bin/bash

# 定数定義
OEM_CODE_H=41   # Art-NetのOEMコードの上位バイト10進数で表記
OEM_CODE_L=218  # Art-NetのOEMコードの下位バイト10進数で表記 仮に0x29DA Oem_hdl_dmxnode8_1 HDL
NETWORK_SWITCH=2 # NetworkSwitch/ON=2,OFF=10
ETH0_NAME="artnet-in-eth0"
ETH1_NAME="artnet-out-eth1"

# 必要なファイル、コマンドの有無を確認
# bcコマンド
if !(type "bc" > /dev/null 2>&1); then
 /usr/bin/echo "[Art-Net] Please Install the bc command."
 exit
fi

## ipアドレス設定
ETH_NAME=$ETH0_NAME
for (( i=0; i<2; i++ )); do

 ## ethの有無を確認
 P_eth=$(/usr/sbin/ifconfig | /usr/bin/grep eth$i)
 if [ -z "$P_eth" ]; then
  /usr/bin/echo "[Art-Net] eth"$i" does not exist"
  exit
 fi

 ## ethのMACアドレスを変数に格納する
 MAC_ADDR_eth=$(/usr/bin/cat `find /sys/devices/ -name eth$i`/address)

 ## MACアドレスの有無を確認し、あればIPアドレスの設定を実行
 if [ -n "$MAC_ADDR_eth" ]; then
  # ethのIPアドレス作成
  # 区切り文字「:」で配列変数化
  MAC_eth=(${MAC_ADDR_eth//:/ })
  # 16進数の文字列を数値に変換する
  MAC_eth_4=$((16#${MAC_eth[3]}))
  MAC_eth_5=$((16#${MAC_eth[4]}))
  MAC_eth_6=$((16#${MAC_eth[5]}))
  # Art-NetのIPアドレスを計算
  ArtNet_IP_eth_1=$NETWORK_SWITCH
  ArtNet_IP_eth_2=$(((MAC_eth_4 + OEM_CODE_H + OEM_CODE_L) % 256))
  ArtNet_IP_eth_3=$MAC_eth_5
  ArtNet_IP_eth_4=$MAC_eth_6
  ArtNet_IP_eth=$ArtNet_IP_eth_1"."$ArtNet_IP_eth_2"."$ArtNet_IP_eth_3"."$ArtNet_IP_eth_4
  /usr/bin/echo "[Art-Net] "$ETH_NAME" is "$ArtNet_IP_eth
  # NetworkManager設定ファイルの有無確認
  if [ ! -e "/etc/NetworkManager/system-connections/"$ETH_NAME".nmconnection" ]; then
   # 設定ファイルが無いので新規設定し有効化
   /usr/bin/nmcli connection add con-name $ETH_NAME type ethernet ifname eth$i connection.autoconnect yes ipv4.addresses $ArtNet_IP_eth"/8" ipv4.method manual ipv4.never-default no ipv6.method disabled >> /dev/null
   /usr/bin/nmcli c reload
   /usr/bin/nmcli c up $ETH_NAME >> /dev/null
  else
   # 設定ファイルがある IPアドレスが違うなら更新
   # 現在のIPアドレスを取得
   Current_IP_eth=$(/usr/bin/ip -f inet -o addr show eth$i|cut -d\ -f 7 | cut -d/ -f 1)
   # 現在のIPアドレスがArt-NetのIPアドレスと違うなら更新
   if [ "$Current_IP_eth" != "$ArtNet_IP_eth" ]; then
    /usr/bin/nmcli c modify $ETH_NAME ipv4.address $ArtNet_IP_eth"/8"
    /usr/bin/nmcli c down $ETH_NAME >> /dev/null
    /usr/bin/nmcli c reload
    /usr/bin/nmcli c up $ETH_NAME >> /dev/null
    /usr/bin/echo "[Art-Net] Updated eth"$i" IP address."
   else
   # IPアドレスが同じなので何もしない
   /usr/bin/echo "[Art-Net] eth"$i" does not need to be changed."
   fi
  fi
 else
  # MACアドレスを取得出来ません
  /usr/bin/echo "[Art-Net] Unable to obtain IP address for eth"$i"."
 fi
 ## eth1に切換え
 ETH_NAME=$ETH1_NAME
## for 折り返し
done


 手直ししたコードに差し替えました。
 下手糞コードは勘弁してください。。。
 スマホで表示すると表示が崩れますが原因は不明です。

#[Art-Net]
Icon of admin
 資料映像のレンダリング中に Art-Net の IPアドレスを設定する Bashスクリプトを書いてみました。
 実機は自宅ですが ssh で遠隔操作が出来ます。
 dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
 とりあえず本体プログラムを書くための準備は終わりました。

#[Art-Net]
Icon of admin
 bookworm において NetworkManager を用いて IPアドレスを設定する例です。
NIC の命名規則が eth で eth1 を対象とする場合

◆ DHCP 扱いの eth1 に固定 ipv4 アドレスを定義する。
// NerwotkManager は NIC 単位で設定します。以下は設定名を「artnet-out-eth1」としています。
// すでに同名で設定されている場合は次の「◆ ipv4 アドレスを変更する」の手順で変更します。
// 設定ファイルは「/etc/NetworkManager/system-connections」に置かれるので、ここに「artnet-out-eth1.nmconnection」があればすでに設定されています。
// ipv4 アドレスは「2.99.100.202」、サブネットマスクを「255.0.0.0」とするので「/8」
// ArtNetPatch では ipv6 を扱わないので無効にします。
$ sudo nmcli connection add con-name "artnet-out-eth1" type ethernet ifname eth1 connection.autoconnect yes ipv4.addresses "2.99.100.202/8" ipv4.method manual ipv4.never-default no ipv6.method disabled
// NetworkManager の設定を再読み込みする
$ sudo nmcli c reload
// artnet-out-eth1 を起動する
$ sudo nmcli c up artnet-out-eth1

◆ ipv4 アドレスを変更する。
// ipv4 アドレスを「2.99.100.203/8」に変更する
$ sudo nmcli c modify artnet-out-eth1 ipv4.address 2.99.100.203/8
// 以下、停止、再読み込み、起動。
$ sudo nmcli c down artnet-out-eth1
$ sudo nmcli c reload
$ sudo nmcli c up artnet-out-eth1

◆ 設定を削除する
// 停止
$ sudo nmcli c down artnet-out-eth1
// 設定を削除
$ sudo nmcli c delete artnet-out-eth1

 コマンドで設定・変更をしますが、設定ファイルが主体です。
 設定ファイルは「/etc/NetworkManager/system-connections/artnet-out-eth1.nmconnection」です。

 この書式で設定、変更、削除が出来ました。
 スクリプトで自動設定するなら、設定ファイルに呪文を書くよりこの様にコマンドで設定出来るのはいいかもしれない。

#Linux #RaspberryPi
Icon of admin
 愛機 MAdot2 のタッチパネルがおかしい。
 タッチしたのと違うところが反応したり一点をタッチしたのに領域選択になったり。キャリブレーションをしても改善せず。
 早い話故障です。
 モジュール交換だったら高くつくなぁ~と思っていたところ、M社のM氏から有益な情報。
 「タッチパネルの外周に砂などのゴミが付着しているとそうなりますよ」
 とのこと。
 早速分解。
 ネジが多くてドイツらしいなぁと思いつつ、モニタモジュールまで遠いなぁと思いつつ分解。
 モニタモジュールを外すと筐体との隙間に砂と土汚れが付着。野外で使うこともありますから仕方ないのかな。
 エタノールを軽く含ませた布で抜き取る。筐体側も掃除。エタノールを直接吹きかけるのは良くないと思う。
 掃除後、仮組みして電源投入。アッサリ治ってしまいました。
 タッチパネルにはいくつかの方式がありますが、どの方式でもパネル面の電位が狂うとダメです。砂によって電位が狂ってしまったのでしょう。
 修理は簡単っちゃ簡単ですが、問題はモニタモジュールを外すまでが遠いこととリボンケーブルの扱い。筐体を開けるのは当然ですが、基板類まで外さないといけません。リボンケーブルが多用されているので外し方を知らないと大事故になります。ノートパソコンの分解整備の経験があればナンてことありませんが、慎重を期す必要があります。
 簡単にやっつけるなら筐体とモニタモジュールの間をエアブローしてもいいかも。挟まっている砂の種類によっては基板を壊すので注意が必要ですけどね。
 モニタ面の電位が浸入物で不安定にならなければいいので、ゴムで枠を作って挟んでみましょう。要はパッキンです。これで安定するなら同様の故障が起こる可能性は減るハズです。

#器具の修理
Icon of admin
 CYANの前傾オベタを現場で使用しました。トラスの足元近くまで光が行きますので良い傾向。
 今後も便利に使えそうですから所有数分作ってしまおうか妄想中。
 トラスとの固定で使うボルトは捨て穴を空けてそれに通しておく予定です。

#ガチ工作 #器具の製作
Icon of admin
 ミッチャクロンマルチ・スプレーの値段が上がっていました。
 ミッチャクロンマルチはヘタな下地処理より効果的です。足付けなどせず、ザックリ脱脂して塗れば完璧な下地になります。安物のラッカースプレーでも強固な塗膜に仕上がります。施工時間が短くすむことも含め、費用対効果は抜群です。
 けど、1,600円前後で買えたものが2,000円越えました。良い物なので納得の価格ではありますが、これからは節約して使おうかな・・・って貧乏性。

#工具や資材
Icon of admin
 今週末の現場でトラス柱の上に CYAN6000XEmk3 を仕込む為の前傾オベタを作り忘れていました。
 6台を3時間で特急製造。最近、アホかと思うくらい手丸ノコで正確に切れるようになりまして、ナリで組めるので短時間で仕上がります。
202405151544442-admin.jpg 202405151544443-admin.jpg 20240515154444-admin.jpg 202405151544441-admin.jpg
 初戦まで時間が無いので塗装はラッカースプレーの簡易版です。後でウレタン塗料を本塗りします。
 側面に空けた丸穴にベルトを通してアッパーボックスを固定します。トラスには底板をボルトで固定です。
 30度前傾ですのでアッパーボックスを下にしてトラス柱のテッペンに仕込んでもほどほどに手前が取れるかなと。

#ガチ工作 #器具の製作
Icon of admin
 RaspberryPiに最新のOS(bookworm)を入れてみました。
 ナニかおかしい・・・。
 調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
 これは勉強しなおさんといかん。
 このあたり、ちょくちょく変わるので面倒である。

追記
 ちょっと早起きしたので NetworkManeger について調べてみました。
 dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
 そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
 次の記事はわかりやすいかも。
 「NetworkManagerの接続設定作成用テンプレート」
 Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。

追記+
 NetworkManager の設定を変更するには modify を使います。
 まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
 down して up する操作が必要です。

#RaspberryPi
Icon of admin
 RaspberryPiの開発セットが完成しました。
 開発に使用する用品をマジックテープ付きの合板に貼り付けてスロットインします。
 常に仮組みしておく意図です。作業の都度組まなくても済みますし作業場所も選びません。
202405112147483-admin.jpg 20240511214748-admin.jpg 202405112147481-admin.jpg 202405112147482-admin.jpg
 現在の案件はArtNetPatchですからHubが2個です。一番奥のスロットにRaspberryPiが入っています。
 仕上げは大雑把ですが便利です。

#RaspberryPi #[Art-Net]
Icon of admin
 本業で使う器具の製造や修理のネタはまだまだありますが、このところ段取りを進めていた物は一通り終わりました。
 次の段取りといきたいところですが、本業の都合で工作はしばらくお休みです。
 ただ、「6C30mini」と名付けたC型30Aコンセントボックスの増産は夏に間に合わせたいし、同じ形状でD型20Aコンセントボックスも製作しますので、これらの部品表の整理と発注は進めます。

#器具の製作 #器具の修理

■思ってみた

春ですねぇ~。
花粉症の部下は死にそうですが、暖かいってのはいいことです。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2024年5月
1234
567891011
12131415161718
19202122232425
262728293031

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年4月29日(火) 20時16分48秒