2024年の投稿[199件](11ページ目)
2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する
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]
体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。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]
資料映像のレンダリング中に Art-Net の IPアドレスを設定する Bashスクリプトを書いてみました。
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]
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
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
愛機 MAdot2 のタッチパネルがおかしい。
タッチしたのと違うところが反応したり一点をタッチしたのに領域選択になったり。キャリブレーションをしても改善せず。
早い話故障です。
モジュール交換だったら高くつくなぁ~と思っていたところ、M社のM氏から有益な情報。
「タッチパネルの外周に砂などのゴミが付着しているとそうなりますよ」
とのこと。
早速分解。
ネジが多くてドイツらしいなぁと思いつつ、モニタモジュールまで遠いなぁと思いつつ分解。
モニタモジュールを外すと筐体との隙間に砂と土汚れが付着。野外で使うこともありますから仕方ないのかな。
エタノールを軽く含ませた布で抜き取る。筐体側も掃除。エタノールを直接吹きかけるのは良くないと思う。
掃除後、仮組みして電源投入。アッサリ治ってしまいました。
タッチパネルにはいくつかの方式がありますが、どの方式でもパネル面の電位が狂うとダメです。砂によって電位が狂ってしまったのでしょう。
修理は簡単っちゃ簡単ですが、問題はモニタモジュールを外すまでが遠いこととリボンケーブルの扱い。筐体を開けるのは当然ですが、基板類まで外さないといけません。リボンケーブルが多用されているので外し方を知らないと大事故になります。ノートパソコンの分解整備の経験があればナンてことありませんが、慎重を期す必要があります。
簡単にやっつけるなら筐体とモニタモジュールの間をエアブローしてもいいかも。挟まっている砂の種類によっては基板を壊すので注意が必要ですけどね。
モニタ面の電位が浸入物で不安定にならなければいいので、ゴムで枠を作って挟んでみましょう。要はパッキンです。これで安定するなら同様の故障が起こる可能性は減るハズです。
#器具の修理
タッチしたのと違うところが反応したり一点をタッチしたのに領域選択になったり。キャリブレーションをしても改善せず。
早い話故障です。
モジュール交換だったら高くつくなぁ~と思っていたところ、M社のM氏から有益な情報。
「タッチパネルの外周に砂などのゴミが付着しているとそうなりますよ」
とのこと。
早速分解。
ネジが多くてドイツらしいなぁと思いつつ、モニタモジュールまで遠いなぁと思いつつ分解。
モニタモジュールを外すと筐体との隙間に砂と土汚れが付着。野外で使うこともありますから仕方ないのかな。
エタノールを軽く含ませた布で抜き取る。筐体側も掃除。エタノールを直接吹きかけるのは良くないと思う。
掃除後、仮組みして電源投入。アッサリ治ってしまいました。
タッチパネルにはいくつかの方式がありますが、どの方式でもパネル面の電位が狂うとダメです。砂によって電位が狂ってしまったのでしょう。
修理は簡単っちゃ簡単ですが、問題はモニタモジュールを外すまでが遠いこととリボンケーブルの扱い。筐体を開けるのは当然ですが、基板類まで外さないといけません。リボンケーブルが多用されているので外し方を知らないと大事故になります。ノートパソコンの分解整備の経験があればナンてことありませんが、慎重を期す必要があります。
簡単にやっつけるなら筐体とモニタモジュールの間をエアブローしてもいいかも。挟まっている砂の種類によっては基板を壊すので注意が必要ですけどね。
モニタ面の電位が浸入物で不安定にならなければいいので、ゴムで枠を作って挟んでみましょう。要はパッキンです。これで安定するなら同様の故障が起こる可能性は減るハズです。
#器具の修理
ミッチャクロンマルチ・スプレーの値段が上がっていました。
ミッチャクロンマルチはヘタな下地処理より効果的です。足付けなどせず、ザックリ脱脂して塗れば完璧な下地になります。安物のラッカースプレーでも強固な塗膜に仕上がります。施工時間が短くすむことも含め、費用対効果は抜群です。
けど、1,600円前後で買えたものが2,000円越えました。良い物なので納得の価格ではありますが、これからは節約して使おうかな・・・って貧乏性。
#工具や資材
ミッチャクロンマルチはヘタな下地処理より効果的です。足付けなどせず、ザックリ脱脂して塗れば完璧な下地になります。安物のラッカースプレーでも強固な塗膜に仕上がります。施工時間が短くすむことも含め、費用対効果は抜群です。
けど、1,600円前後で買えたものが2,000円越えました。良い物なので納得の価格ではありますが、これからは節約して使おうかな・・・って貧乏性。
#工具や資材
RaspberryPiに最新のOS(bookworm)を入れてみました。
ナニかおかしい・・・。
調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
これは勉強しなおさんといかん。
このあたり、ちょくちょく変わるので面倒である。
追記
ちょっと早起きしたので NetworkManeger について調べてみました。
dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
次の記事はわかりやすいかも。
「NetworkManagerの接続設定作成用テンプレート」
Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。
追記+
NetworkManager の設定を変更するには modify を使います。
まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
down して up する操作が必要です。
#RaspberryPi
ナニかおかしい・・・。
調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
これは勉強しなおさんといかん。
このあたり、ちょくちょく変わるので面倒である。
追記
ちょっと早起きしたので NetworkManeger について調べてみました。
dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
次の記事はわかりやすいかも。
「NetworkManagerの接続設定作成用テンプレート」
Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。
追記+
NetworkManager の設定を変更するには modify を使います。
まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
down して up する操作が必要です。
#RaspberryPi
RaspberryPiの開発セットが完成しました。
開発に使用する用品をマジックテープ付きの合板に貼り付けてスロットインします。
常に仮組みしておく意図です。作業の都度組まなくても済みますし作業場所も選びません。

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




現在の案件はArtNetPatchですからHubが2個です。一番奥のスロットにRaspberryPiが入っています。
仕上げは大雑把ですが便利です。
#RaspberryPi #[Art-Net]