<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubuntu | 星空の風景, 日々の風景</title>
	<atom:link href="https://globe3.ddns.net/wp/category/gnu-linux/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>https://globe3.ddns.net/wp</link>
	<description>星空のこと. 日々に想うこと.</description>
	<lastBuildDate>Tue, 09 Jun 2026 03:24:23 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Ubuntu KStars 3.8.2 Flatpak版へ行こう</title>
		<link>https://globe3.ddns.net/wp/flatpak-version-kstars-ubuntu24-04-migrate-my-data/</link>
					<comments>https://globe3.ddns.net/wp/flatpak-version-kstars-ubuntu24-04-migrate-my-data/#respond</comments>
		
		<dc:creator><![CDATA[minmin]]></dc:creator>
		<pubDate>Mon, 18 May 2026 00:31:48 +0000</pubDate>
				<category><![CDATA[INDI-Library]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://globe3.ddns.net/wp/?p=3263</guid>

					<description><![CDATA[Ubuntu 24.04 に Flatpak版 KStarsを用います。これまでのデータも移行します。 KStars 3.8.1 を使って、極軸修正を行うと、とんでもない修正値が表示されました。「いやいや、沖縄くらいの緯 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ubuntu 24.04 に Flatpak版 KStarsを用います。これまでのデータも移行します。</p>



<p class="wp-block-paragraph">KStars 3.8.1 を使って、極軸修正を行うと、とんでもない修正値が表示されました。<br>「いやいや、沖縄くらいの緯度には居ないって」</p>



<h2 class="wp-block-heading">KStars 3.8.1 と Apt installed KStars は、Polar Alignment に不備</h2>



<p class="wp-block-paragraph">KStars 3.8.1には、 Polar Alignment に不備があります。<br>Ubuntuシステムから、aptなどでインストールされた、KStars 3.8.2もこの不備が未修正です。</p>


<a rel="noopener" target="_blank" href="https://knro.blogspot.com/2026/04/kstars-382-released.html" title="KStars 3.8.2 Released" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img fetchpriority="high" decoding="async" src="https://globe3.ddns.net/wp/wp-content/uploads/cocoon-resources/blog-card-cache/c4dfe581a5fa0e2f86caad917790c83c.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">KStars 3.8.2 Released</div><div class="blogcard-snippet external-blogcard-snippet">KStars v3.8.2 is released on 2026.04.08 for Windows, Linux, and MacOS . For Linux users, it&#039;s highly recommended to use &#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=http://knro.blogspot.com/2026/04/kstars-382-released.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">knro.blogspot.com</div></div></div></div></a>


<p class="wp-block-paragraph">KStars 3.8.2に案内がありました。「Linux使いは、Flatpak版を強くお勧めしますよ」<br>極軸修正についての案内もありました。<br></p>



<h2 class="wp-block-heading">Flatpak を Ubuntuにインストール</h2>


<a rel="noopener" target="_blank" href="https://flatpak.org/setup/Ubuntu" title="Flatpak—the future of application distribution" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fflatpak.org%2Fsetup%2FUbuntu?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Flatpak—the future of application distribution</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://flatpak.org/setup/Ubuntu" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">flatpak.org</div></div></div></div></a>


<p class="wp-block-paragraph">Flatpak の Ubuntuに設定する案内に沿って、インストールします。</p>



<pre class="wp-block-code"><code>$ sudo apt install flatpak
$ sudo apt install gnome-software-plugin-flatpak
$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
$ sudo reboot</code></pre>



<h2 class="wp-block-heading">Flatpak版、KStarsをUbuntuへインストール</h2>



<p class="wp-block-paragraph">再起動後に、「はて、KStars Flatpak版はどうやってインストールするのかな？」<br>kstars.kde.orgや、Stellarmateにも案内があるので、これに沿ってインストールしていきます。</p>


<a rel="noopener" target="_blank" href="https://kstars.kde.org/download/linux" title="KStars for Linux" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://globe3.ddns.net/wp/wp-content/uploads/cocoon-resources/blog-card-cache/a50d54f03471389105226615179d9385.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">KStars for Linux</div><div class="blogcard-snippet external-blogcard-snippet">What is Flatpak? Flatpak is a modern packaging and distribution system for Linux applications. It allows developers to b&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://kstars.kde.org/download/linux/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">kstars.kde.org</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://stellarmate.com/downloads/ekos/download/2-ekos/3-ekos-for-linux.html" title="Ekos for Linux 3.8.2" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fstellarmate.com%2Fdownloads%2Fekos%2Fdownload%2F2-ekos%2F3-ekos-for-linux.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Ekos for Linux 3.8.2</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://stellarmate.com/downloads/ekos/download/2-ekos/3-ekos-for-linux.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">stellarmate.com</div></div></div></div></a>


<pre class="wp-block-code"><code>インストールスクリプトをダウンロードする
$ wget https://raw.githubusercontent.com/ikarustechnologies/indi-firmware/main/kstars.sh

安定版の場合(ほとんどの皆さんに推奨されています):
$ bash kstars.sh

自動更新
$ bash kstars.sh

手動にて直接更新
flatpak update org.kde.kstars</code></pre>



<p class="wp-block-paragraph">インストール後のコンソールに、以下が表示されました。</p>



<pre class="wp-block-code"><code>================================================================
================================================================
                   Installation completed 
                For running the Kstars, run: 
       flatpak run --user org.kde.kstars//stable  
================================================================
================================================================</code></pre>



<p class="wp-block-paragraph">Flatpak版 KStarsを使うには次のコマンです。</p>



<pre class="wp-block-code"><code>$ flatpak run --user org.kde.kstars//stable</code></pre>



<p class="wp-block-paragraph">KStarsを起動すると、以下の表示があり、KStarsが使うデータのディレクトリが分ります。</p>



<pre class="wp-block-code"><code>org.kde.kstars: Loaded DSO catalog file:  "unnamedstars.dat"
org.kde.kstars: "星 HD20,794 が見つかりません。"
org.kde.kstars: "星 HD98,230 が見つかりません。"
org.kde.kstars: Loaded DSO catalogs.
org.kde.kstars: Loading asteroids
org.kde.kstars: Loading asteroid objects failed.
org.kde.kstars: " -&gt; was trying to read /home/USERNAME/.var/app/org.kde.kstars/data/kstars/asteroids.dat"
org.kde.kstars: Loading comets
</code></pre>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">KStars インストールやデータ移行</h2>



<p class="wp-block-paragraph">これまで使っていたリポジトリインストール版からのデータ移行もします。</p>


<a rel="noopener" target="_blank" href="https://kstars.kde.org/download/linux" title="KStars for Linux" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://globe3.ddns.net/wp/wp-content/uploads/cocoon-resources/blog-card-cache/a50d54f03471389105226615179d9385.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">KStars for Linux</div><div class="blogcard-snippet external-blogcard-snippet">What is Flatpak? Flatpak is a modern packaging and distribution system for Linux applications. It allows developers to b&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://kstars.kde.org/download/linux/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">kstars.kde.org</div></div></div></div></a>


<p class="wp-block-paragraph">kstars.kde.orgにインストールやデータ移行の案内があります。</p>



<p class="wp-block-paragraph">/home/USERNAME/.config/kstarsrc<br>このディレクトリに構成や設定データがあります。(自分のubuntu環境ではありませんでした)</p>



<p class="wp-block-paragraph">/home/USERNAME/.local/share/kstars<br>Gaiaや天体位置測定、星図にあるフラグデータ(userdb.sqlite)などがあります。<br>これを KStars Flatpak版 が使えるように移行させます。</p>



<pre class="wp-block-code"><code>KStarsの構成や設定データを移行する
$ cp -r ~/.config/kstarsrc ~/.var/app/org.kde.kstars/config/

KStars各種データを移行する
こちらのUbuntu環境では次でした
$ cp -r ~/.local/share/kstars ~/.var/app/org.kde.kstars/data/

kstars.kde.org の案内は以下です
$ cp -r ~/.local/share/kstars ~/.var/app/org.kde.kstars/data/kstars/</code></pre>



<h2 class="wp-block-heading">KStars 設定</h2>



<p class="wp-block-paragraph">&#8220;INDI Control Panel&#8221; &#8220;Ekos&#8221; &#8220;KStars&#8221;などの画面が分離して表示させる。<br>independent window　をチェック</p>



<p class="wp-block-paragraph">File Settings<br>撮影画像ディレクトリ、及び名前形式を決めます。<br>Format: /%T/%t/%t_%T_%F_%e_%D<br><br>撮影画像名は、指定されたディレクトリに、次のファイル名になります。<br>/Light/M1/M1_Light_HEUIB-II_180_secs_2025-09-15T23-51-16_001.fits</p>



<ul class="wp-block-list">
<li>%f (ファイル名): 拡張子を除いた .esq ファイルの名前</li>



<li>%D (日付/時刻): ファイルが保存された時刻と日付</li>



<li>%T (タイプ): フレームのタイプ (例: “Light”、”Dark “など)</li>



<li>%e (露出): 露光時間（秒）</li>



<li>%F (フィルター): 使用するフィルター名</li>



<li>%t (ターゲット): ターゲット名</li>



<li>%s (シーケンス): イメージ シーケンスの識別子。* は使用される桁数 (1 ～ 9) です。 このタグは必須であり、形式の最後の要素である必要があります。</li>



<li>サフィックス: ファイル名にシーケンス番号を追加するために使用される桁数</li>
</ul>



<p class="wp-block-paragraph">マウスポインターの形を変えるには、<br>KStars画面 → 設定 → KStarsを設定 → 詳細 → Look and Feel → Default cursor:<br></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Flatpak版 KStarsインストール中のコンソール表示は、</p>



<pre class="wp-block-code"><code>$ wget https://raw.githubusercontent.com/ikarustechnologies/indi-firmware/main/kstars.sh
$ bash kstars.sh
Checking for and installing flatpak...
Flatpak is already installed.
Checking for and installing fxload (required for QHYCCD firmware)...
Detected Debian/Ubuntu. Installing fxload using apt...

以下のパッケージが新たにインストールされます:
  fxload

Cloning repository 'https://github.com/ikarustechnologies/indi-firmware.git'...
Cloning into '/home/USERNAME/.indi-firmware'...
remote: Enumerating objects: 447, done.
remote: Counting objects: 100% (82/82), done.
remote: Compressing objects: 100% (44/44), done.
remote: Total 447 (delta 35), reused 54 (delta 19), pack-reused 365 (from 1)
Receiving objects: 100% (447/447), 1.78 MiB | 3.33 MiB/s, done.
Resolving deltas: 100% (192/192), done.
Creating destination directories: /lib/udev/rules.d, /lib/firmware/qhy...
Destination directories created.
Copying udev rules files to /lib/udev/rules.d...
'/home/USERNAME/.indi-firmware/indi/drivers/auxiliary/99-indi_auxiliary.rules' -&gt; '/lib/udev/rules.d/99-indi_auxiliary.rules'
'/home/USERNAME/.indi-firmware/indi/drivers/video/80-dbk21-camera.rules' -&gt; '/lib/udev/rules.d/80-dbk21-camera.rules'
'/home/USERNAME/.indi-firmware/indi-3rdparty/indi-ffmv/99-fireflymv.rules' -&gt; '/lib/udev/rules.d/99-fireflymv.rules'
'/home/USERNAME/.indi-firmware/indi-3rdparty/indi-nightscape/99-nightscape.rules' -&gt; '/lib/udev/rules.d/99-nightscape.rules'
'/homeUSERNAME/.indi-firmware/indi-3rdparty/indi-armadillo-platypus/99-armadilloplatypus.rules' -&gt; '/lib/udev/rules.d/99-armadilloplatypus.rules'

Udev rules files copied.
Installing fxload helper script to /usr/local/sbin/indi-fxload...

Copying individual firmware files to /lib/firmware...
'/home/USERNAME/.indi-firmware/indi-3rdparty/libfishcamp/gdr_usb.hex' -&gt; '/lib/firmware/gdr_usb.hex'

Individual firmware files copied.

Copying QHY firmware files to /lib/firmware/qhy...
'/home/USERNAME/.indi-firmware/indi-3rdparty/libqhy/firmware/IC16200A.HEX' -&gt; '/lib/firmware/qhy/IC16200A.HEX'

QHY firmware files copied.
Reloading udev rules...
Udev rules reloaded.
Adding Flathub remote if it doesn't exist...
Flathub remote added.
Adding kstars-nightly hub remote if it doesn't exist...
kstars-nightly remote added.
Installing KDE Platform and SDK runtimes...
Looking for matches…

        ID                                           Branch             Op        Remote         Download
 1. &#91;✓] org.freedesktop.Platform.GL.default          25.08              i         flathub        141.4&nbsp;MB / 142.4&nbsp;MB
 2. &#91;✓] org.freedesktop.Platform.GL.default          25.08-extra        i         flathub         25.6&nbsp;MB / 142.4&nbsp;MB
 3. &#91;✓] org.freedesktop.Platform.VAAPI.Intel         25.08              i         flathub         13.6&nbsp;MB / 13.7&nbsp;MB
 4. &#91;✓] org.freedesktop.Platform.codecs-extra        25.08-extra        i         flathub         14.2&nbsp;MB / 14.4&nbsp;MB
 5. &#91;✓] org.gtk.Gtk3theme.Yaru                       3.22               i         flathub        139.3&nbsp;kB / 191.5&nbsp;kB
 6. &#91;✓] org.kde.Platform.Locale                      6.10               i         flathub          1.9&nbsp;MB / 400.7&nbsp;MB
 7. &#91;✓] org.kde.Platform                             6.10               i         flathub        315.8&nbsp;MB / 387.1&nbsp;MB

Installation complete.
Looking for matches…

        ID                          Branch         Op         Remote          Download
 1. &#91;✓] org.kde.Sdk.Locale          6.10           i          flathub         274.6&nbsp;kB / 416.4&nbsp;MB
 2. &#91;✓] org.kde.Sdk                 6.10           i          flathub         821.8&nbsp;MB / 1.1&nbsp;GB

Installation complete.
KDE Platform and SDK runtimes installed.
Installing KStars Flatpak package version stable...
Looking for matches…

org.kde.kstars permissions:
    ipc           network      fallback-x11         pulseaudio           wayland      x11
    devices       devel        file access &#91;1]      dbus access &#91;2]

    &#91;1] xdg-config/kdeglobals:ro, xdg-documents, xdg-pictures, xdg-videos, ~/.cache/sentry, ~/.indi
    &#91;2] com.canonical.AppMenu.Registrar, org.kde.KGlobalSettings, org.kde.kconfig.notify


        ID                     Branch         Op         Remote         Download
 1. &#91;✓] org.kde.kstars         stable         i          flathub        423.7&nbsp;MB / 473.1&nbsp;MB

Installation complete.
Looking for updates…

Nothing to do.
KStars Flatpak version stable installed.
Script finished.

================================================================ 
                   Installation completed 
                For running the Kstars, run: 
       flatpak run --user org.kde.kstars//stable  
================================================================

</code></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://globe3.ddns.net/wp/flatpak-version-kstars-ubuntu24-04-migrate-my-data/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Himadawa Cover ELパネル 制御</title>
		<link>https://globe3.ddns.net/wp/himadawa-cover-elpanel-control-python/</link>
					<comments>https://globe3.ddns.net/wp/himadawa-cover-elpanel-control-python/#comments</comments>
		
		<dc:creator><![CDATA[minmin]]></dc:creator>
		<pubDate>Wed, 15 Oct 2025 02:03:47 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[天文]]></category>
		<guid isPermaLink="false">https://globe3.ddns.net/wp/?p=2285</guid>

					<description><![CDATA[https://himadawa.doorblog.jp/archives/10160498.htmlあっさりと作られるのは、凄い事です。それを楽しまれているのも素晴らしい。 Himadawaさんが制作されたカバーとEL [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://himadawa.doorblog.jp/archives/10160498.html">https://himadawa.doorblog.jp/archives/10160498.html</a><br>あっさりと作られるのは、凄い事です。それを楽しまれているのも素晴らしい。</p>



<p class="wp-block-paragraph">Himadawaさんが制作されたカバーとELパネルを Python で &#8220;On, Off&#8221; するGUIを試作します。<br>PythonでUSBシリアルリレーを&#8221;On, Off&#8221;します。</p>



<p class="wp-block-paragraph">GNU/Linux では、コマンドとそれを組み合わせたスクリプトで過ごしてきた自分ですが、これは『人に優しくない』ので、GUIを習作します。</p>



<p class="wp-block-paragraph">GNU/Linux を使い、コマンドを組み合わせたスクリプトは何となく作れる者の、これは、Python学習メモです。まとまっていません。<br>貴方には読みにくいと思います。ごめんなさい。</p>



<p class="wp-block-paragraph">Python ソースは一番下側にあります。貴方の必要に応じて改変して使って下さい。</p>



<p class="wp-block-paragraph">「曇りの日が多くて星空が見られないよ〜」→「天体画像処理も一通り終えたな〜」→<br>　「Siril開発版も落ち着いてきたな〜」→「プログラムでもしよっかな」→<br>　　「天体画像処理でも使えるからPythonだ」</p>



<h2 class="wp-block-heading">USBデバイスを調べる</h2>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://devicehunt.com">https://devicehunt.com</a><br>こちらでUSBデバイスを調べます。<br><br>今回使う、USB RELAY X-RL1 のベンダーidとプロダクトidを入れると、<br>Microchip Technology, Inc.<br>CDC RS-232 Emulation Demo</p>



<h2 class="wp-block-heading">リレー動作確認</h2>



<p class="wp-block-paragraph">コマンドを送って、USBリレーモジュールの動作確認を行います。<br>物は、USB RELAY X-RL1 及び、USB RELAY X-RL2</p>



<ul class="wp-block-list">
<li>USBモジュールを差し込み、/dev/ttyUSB0 もしくは /dev/ttyACM0 などを確認します。</li>



<li>$ sudo stty -F /dev/ttyACM0　← ボーレートの設定。設定無しでも良い。</li>



<li>$ sudo echo -n &#8220;1&#8221; &gt; /dev/ttyACM0　← グループにユーザー追加せずに、sudoを用いる。</li>



<li>$ sudo echo -n &#8220;0&#8221; &gt; /dev/ttyACM0　← 改行が不要な場合は、-nオプション。</li>
</ul>



<p class="wp-block-paragraph">USB RELAY X-RL2 は基盤プリントに &#8220;A1送信でリレーAがON&#8221; とあるので以下で動作確認します。</p>



<ul class="wp-block-list">
<li>$ sudo echo -n &#8220;A1&#8221; &gt; /dev/ttyACM0</li>



<li>$ sudo echo -n &#8220;A0&#8221; &gt; /dev/ttyACM0</li>



<li>$ sudo echo -n &#8220;B1&#8221; &gt; /dev/ttyACM0</li>



<li>$ sudo echo -n &#8220;B0&#8221; &gt; /dev/ttyACM0</li>
</ul>



<h2 class="wp-block-heading">Python周り (Python 環境のこと)</h2>



<p class="wp-block-paragraph">SirilもPythonスクリプトを多用しています。<br>自分もPythonコードを少しは分かるようになりたいので、Pythonを使います。<br>OSはGUN/Linux, Ubuntu 24 です。</p>



<p class="wp-block-paragraph">GUIを扱う&#8221;Tkinter&#8221;<br>シリアルを扱う&#8221;pyserial&#8221;を用意します。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://packaging.python.org/ja/latest/tutorials/installing-packages">https://packaging.python.org/ja/latest/tutorials/installing-packages</a><br>ここを参照し、仮想環境も作ります。</p>



<pre class="wp-block-code"><code>$ python3 -m pip --version #バージョン確認
$ python3 -m venv tutorial_env #試作ディレクトリを作成
$ cd tutorial_env
$ source ./bin/activate #試作ディレクトリを活性化
$ python3 -m pip install tkinter
$ python3 -m pip install pyserial</code></pre>



<p class="wp-block-paragraph">Pythonのシリアル通信モジュールには、2種類あるそうです。<br>・pyserial ← こちらを使います。<br>・serial</p>



<p class="wp-block-paragraph">Visual Studio Code が便利そうなので使います。<br><a rel="noopener" target="_blank" href="https://code.visualstudio.com/download">https://code.visualstudio.com/download</a><br>&#8220;.deb&#8221;ファイルをダウンロードし、$ sudo apt install code_????_amd64.deb</p>



<pre class="wp-block-code"><code>カレントディレクトリで、Visual Studio Code を動かします。
$ code .</code></pre>



<p class="wp-block-paragraph">日本語パッケージを使います。Japanese Language Pack<br>Python言語サポートする拡張機能も使います。<br></p>



<h2 class="wp-block-heading">デバイスファイル名を固定する</h2>



<p class="wp-block-paragraph">頻繁に、PCに接続する機器が変わらないならば、pythonコードにデバイスを指定します。</p>



<p class="wp-block-paragraph">USBデバイスを入れ替えるならば、コネクターに挿すごとにデバイスファイル名が変わるのは、困ります。<br>その場合は、udevコンフィグファイルを指定することで、シンボリックリンクを作ります。</p>



<p class="wp-block-paragraph">USB RELAY X-RL1 は、syslogを見ると、</p>



<pre class="wp-block-code"><code>New USB device found, idVendor=04d8, idProduct=000a, bcdDevice= 1.01
New USB device strings: Mfr=1, Product=2, SerialNumber=3
Product: USB-RELAY1
SerialNumber: X-RL1
mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"</code></pre>



<p class="wp-block-paragraph">USB端子の箇所を変えると、</p>



<pre class="wp-block-code"><code>mtp-probe: checking bus 2, device 6: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2"</code></pre>



<p class="wp-block-paragraph">$ lsusb</p>



<pre class="wp-block-code"><code>Bus 002 Device 008: ID 04d8:000a Microchip Technology, Inc. CDC RS-232 Emulation Demo</code></pre>



<p class="wp-block-paragraph">$ udevadm info -a -n /dev/ttyACM0</p>



<pre class="wp-block-code"><code>looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1':
  KERNELS=="2-1.1"
  SUBSYSTEMS=="usb"
  DRIVERS=="usb"</code></pre>



<p class="wp-block-paragraph">udevのルールを記述して名前を指定します。<br>参考にしたのはこの方<br><a rel="noopener" target="_blank" href="https://qiita.com/porizou1/items/f8e23e32ed8e1be85c65">https://qiita.com/porizou1/items/f8e23e32ed8e1be85c65</a></p>



<p class="wp-block-paragraph">/etc/udev/rules.d ディレクトリに、指定ファイルを置きます。<br><a rel="noopener" target="_blank" href="https://wiki.archlinux.jp/index.php/Udev">https://wiki.archlinux.jp/index.php/Udev</a><br>上記を参照</p>



<p class="wp-block-paragraph">/etc/udev/rules.d/99-usb-switches.rules</p>



<pre class="wp-block-code"><code>ACTION=="add", KERNELS=="2-1.1", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="000a", SYMLINK+="relay_X-RL1", GROUP="dialout"

# Web カメラならばこんな感じかな
# KERNEL=="video*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", ATTR{index}=="0", SYMLINK+="usb-camera-video0", GROUP="video", MODE="0666"</code></pre>



<ul class="wp-block-list">
<li><code>ATTRS{idVendor}</code>、<code>ATTRS{idProduct}</code>：デバイスに応じて適宜設定する</li>



<li><code>SYMLINK</code>：固定したい名称</li>



<li>GROUP：グループを指定。&#8221;Arduino&#8221;を使用したOnStep赤道儀、&#8221;Althiba&#8221;を使うのに&#8221;dialout&#8221;グループを指定しているので、これを用います。</li>



<li>実行権限を追加するには<code> MODE="0666"</code>を指定する。</li>
</ul>



<p class="wp-block-paragraph">udevに新しいルールを適応させます。</p>



<pre class="wp-block-code"><code>$ sudo udevadm control --reload-rules &amp;&amp; sudo udevadm trigger</code></pre>



<p class="wp-block-paragraph">上記の様に設定すれば、&#8221;/dev/relay_X-RL1&#8243; と指定できます。</p>



<p class="wp-block-paragraph">ここまで行って気づいたのは、プルダウンメニューで、&#8221;/dev/tty何とか&#8221;を選び、指定するのも良いかもしれません。</p>



<h2 class="wp-block-heading">Python スクリプト　自動起動させる</h2>



<p class="wp-block-paragraph">Ubuntu + Python + venv（仮想環境）を、PC起動時にPythonスクリプトを動かします。<br>また、まわり道です。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://widedeepspace.net/2024/09/03/1634">https://widedeepspace.net/2024/09/03/1634</a><br>こちらの方を参考にして</p>



<pre class="wp-block-code"><code>Exec=gnome-terminal -- bash -c "'/home/UserName/ProjectName/venv/bin/python' '/home/UserName/ProjectName/test.py';$SHELL"</code></pre>



<p class="wp-block-paragraph">この部分を下記の様にしました。</p>



<pre class="wp-block-code"><code>Exec=bash -c "source /home/USERNAME/HimadawaCoverEL/venv/bin/activate &amp;&amp; python3.13 /home/USERNAME/HimadawaCoverEL/HimadawaCoverEL.py"</code></pre>



<p class="wp-block-paragraph">/home/USERNAME/.config/autostart/gnome-Himadawa-terminal.desktop<br>以下にファイルを作ります。</p>



<pre class="wp-block-code"><code>&#91;Desktop Entry]
Type=Application
Name=My Venv Script
Exec=bash -c "source /home/USERNAME/HimadawaCoverEL/venv/bin/activate &amp;&amp; python3.13 /home/USERNAME/HimadawaCoverEL/HimadawaCoverEL.py"
Terminal=false
</code></pre>



<p class="wp-block-paragraph">PC起動時に、&#8221;HimadawaCoverEL.py&#8221;も画面に表示されます。</p>



<h2 class="wp-block-heading">Python シリアル事始め</h2>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://www.python.jp/train/index.html">https://www.python.jp/train/index.html</a><br>&#8220;プログラミング言語 Python情報サイト&#8221; こちらも参考にします。<br>分かったことを確認するために、ここに戻ります。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://qiita.com/umi_mori/items/757834e0ef75f38cea19">https://qiita.com/umi_mori/items/757834e0ef75f38cea19</a><br>先ずは、こちらの方から学びます。</p>



<p class="wp-block-paragraph">コマンドを用いて、USBシリアルに&#8221;1&#8243;を送ります。&#8221;1&#8243;を&#8221;0&#8243;に代えると&#8221;0&#8243;を送ります。<br>serial-send_1.py</p>



<pre class="wp-block-code"><code># serial モジュールを読み込み
import serial

# serial ポート指定
PORT ='/dev/ttyACM0'

# serial ボーレート指定
BAUDRATE = 9600

# serial を開ける
# timeout引数は、データの受信待機時間を指定
ser = serial.Serial(PORT, BAUDRATE, timeout=3)

# serial "1" 送る
data = '1'
ser.write(data.encode())

# serial 状態を受信
print(ser)

# serial を閉じる
ser.close()</code></pre>



<p class="wp-block-paragraph">他のソースでは、</p>



<pre class="wp-block-code"><code>import serial

print("===== USBデバイスを指定中 =====\n")

# Set Parameter USBデバイスを指定
deviceName = '/dev/ttyACM0'
baudrateNum = 9600
timeoutNum = 3
print("===== USBデバイス指定終わり =====\n")

# Read Serial
### readSer = serial.Serial('/dev/ttyACM0',9600, timeout=3)
readSer = serial.Serial(deviceName, baudrateNum, timeout=timeoutNum)

c = readSer.read() # 1 byte
### string = readSer.read(10) # 10 byte
### line = readSer.readline() # 1 line (upto '\n')

print("Read Serial:")
print(c)
readSer.close()
print("===== Serial読み込み終わり =====\n")

# Serial 書き込み
serialCommand = "1"
writeSer = serial.Serial(deviceName, baudrateNum, timeout=timeoutNum)
writeSer.write(serialCommand.encode())
writeSer.close()
print("===== Serial書き込み終わり =====\n")

# serial 読み込み
# 文字列に変数を埋め込む f-strings、フォーマット済み文字列リテラル
print(f"シリアル状態:{readSer}")

print("===== プログラム終了 =====\n")</code></pre>



<pre class="wp-block-code"><code>$ python3.13 serial-send_1.py
$ python3.13 serial-send_0.py</code></pre>



<p class="wp-block-paragraph">USB RELAY X-RL1 は、動作確認ができました。</p>



<h2 class="wp-block-heading">Pythonで行いたいこと：仕様  その1 (先ずは簡単に)</h2>



<ul class="wp-block-list">
<li>USBデバイスのパスと通信速度をソースで指定</li>



<li>カバー On, Off スイッチ</li>



<li>ELパネル On, OFF スイッチ</li>



<li>スイッチをそれぞれに2つ</li>



<li>それぞれの状態は、ステータスランプ</li>



<li>カバー[開]、ELパネル[点灯]は、[緑色] → ステータスランプ</li>



<li>カバー[閉]、ELパネル[消灯]は、[橙色] → ステータスランプ</li>
</ul>



<h2 class="wp-block-heading">Pythonで行いたいこと：仕様 その2 (こちらを目指したい)</h2>



<ul class="wp-block-list">
<li>/dev/ を一覧表示</li>



<li>/dev/一覧表示からデバイス、ボーレートを選ぶ</li>



<li>デバイスを接続、若しくは切断</li>



<li>カバー、ELパネル、それぞれにOn、Offスイッチ</li>



<li>カバー[開]、カバー[閉]、ELパネル[点灯]、ELパネル[消灯]、ステータスランプを表示する</li>
</ul>



<h2 class="wp-block-heading">Python GUI 事始め</h2>



<p class="wp-block-paragraph">『習うよりも、慣れろ』これはプログラミングで良く言われることです。<br>本やサイトにあるコードを見たならば、一行でもコードを打ち込む。ですね。</p>



<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">tkinter を用いてGUIを表示させます。</p>
</div>



<p class="wp-block-paragraph">#は、コメントになります。<br>&#8220;&#8221;&#8221;<br>これもコメントになります。<br>複数行のコメントになります。<br>&#8220;&#8221;&#8221;</p>



<p class="wp-block-paragraph">&#8220;&#8221;&#8221;で囲むと文字列</p>



<p class="wp-block-paragraph">処理ブロックは、段落（インデント）ごと<br>文の終わりは改行</p>



<pre class="wp-block-code"><code># ライブラリのインポート
import tkinter as tk

# メインウィンドウの作成
# tk.Tk()は、アプリケーションのメインウィンドウを作成します
# すべてのTkinterアプリケーションは、まずこのインスタンスから始まります

root = tk.Tk()

# ウィンドウのタイトル
root.title("僕のサイズは 400 x 300")

# ウィンドウサイズと位置を指定
root.geometry("400x300+100+50")  # サイズ400x300、画面上の位置(100,50)
# root.geometry("400x300")  # サイズ400x300 のみ

# ウィジェットの作成と配置
# ウィジェットとは、GUIを構成する部品のことです
# ボタン、テキストボックス、ラベル、メニューなどです
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()

# 5. イベントループの開始
# ウィンドウを表示させ、操作を待ち続けさせる
root.mainloop() #これが無いと一瞬で消える</code></pre>



<p class="wp-block-paragraph">上記ソースを表示</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="454" height="439" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/geometry_400x300.jpg" alt="" class="wp-image-2428" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/geometry_400x300.jpg 454w, https://globe3.ddns.net/wp/wp-content/uploads/2025/10/geometry_400x300-300x290.jpg 300w, https://globe3.ddns.net/wp/wp-content/uploads/2025/10/geometry_400x300-150x145.jpg 150w" sizes="(max-width: 454px) 100vw, 454px" /></figure>



<p class="wp-block-paragraph">[カバー部分]や、[EL部分]などの様に、部分を一つのモノとして扱うには、オブジェクト指向</p>



<pre class="wp-block-code"><code>from tkinter import ttk</code></pre>



<p class="wp-block-paragraph">from tkinter import ttk とは、<br><code>" tkinter.ttk</code> →Tk のテーマ付きウィジェット, Ttk &#8221; との事です。<br>ボタンやチェックがつく外観を使えるようです。<br><a rel="noopener" target="_blank" href="https://kuroro.blog/python/L9hqzwxZAx0soqSmI8zE/">https://kuroro.blog/python/L9hqzwxZAx0soqSmI8zE/</a></p>



<h2 class="wp-block-heading" id="import%E6%96%87">import文<a rel="noopener" target="_blank" href="https://www.python.jp/train/type_and_func/modules.html#import%E6%96%87"></a></h2>



<p class="wp-block-paragraph"><code>import</code> 文は、利用するモジュールを次のように指定します。</p>



<p class="wp-block-paragraph">次の様に指定します。</p>



<pre class="wp-block-preformatted">import tkinter # tkinterモジュールを使用する</pre>



<p class="wp-block-paragraph">モジュールをインポートしたら、</p>



<pre class="wp-block-preformatted">モジュール名.関数名()</pre>



<p class="wp-block-paragraph">の形式で、そのモジュールの関数を使えるようになります。</p>



<h2 class="wp-block-heading">Pythonの型とオブジェクト</h2>



<p class="wp-block-paragraph">関連するデータと、それに対する操作をまとめて、これを一つのモノとして捉えます。<br>↓<br>変数と、関数をまとめて、これをオブジェクトとして捉えます。</p>



<p class="wp-block-paragraph">オブジェクトの属性やこの値を「プロパティ」と呼ぶ。<br>関数を「メソッド」と呼ぶ。</p>



<p class="wp-block-paragraph">　「クラス」　　→　「インスタンス化」　→　「オブジェクト」<br>望遠鏡の設計図　→　　インスタンス化　　→　　実際の望遠鏡</p>



<p class="wp-block-paragraph">オブジェクトを使って、<br>・シリアルデバイスを選び、ボーレートを指定。接続、切断ボタン<br>・カバー開ボタン、カバー閉ボタン。EL点灯ボタン、EL消灯ボタン<br>これらをオブジェクトとして配置する。</p>



<p class="wp-block-paragraph">Pythonでは、Pythonが操作するいろいろな種類のデータやプログラムなどのことを、まとめて <strong>オブジェクト</strong> と呼びます。</p>



<h2 class="wp-block-heading">Python ボタン事始め</h2>



<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">tkinter を用いて、GUIに「ボタン」を表示させます。</p>
</div>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://japan-cyber.com/archives/3685">https://japan-cyber.com/archives/3685</a><br>この方から</p>



<pre class="wp-block-code"><code>import tkinter as tk

# メインウィンドウ作成
root = tk.Tk()

# メインウィンドウのタイトル
root.title("HimadawaCoverEL制御")

# メインウィンドウを640x480にする
root.geometry("480x280")

# Cover 開くボタン
def on_button1_click():
    print("Cover開ボタンがクリック")

# Cover 開くボタン処理
button1 = tk.Button(root, text="Cover開 : A1", command=on_button1_click)
button1.pack()

# Cover 閉じるボタン
def on_button2_click():
    print("Cover閉ボタンがクリック")

# Cover 閉じるボタン処理
button2 = tk.Button(root, text="Cover閉 : A0", command=on_button2_click)
button2.pack()

# EL点灯ボタン
def on_button3_click():
    print("EL点灯ボタンがクリック")

# EL点灯ボタン処理
button3 = tk.Button(root, text="EL点灯 : B1", command=on_button3_click)
button3.pack()

# EL消灯ボタン
def on_button4_click():
    print("EL消灯ボタンがクリック")

# EL消灯ボタン処理
button4 = tk.Button(root, text="EL消灯 : B0", command=on_button4_click)
button4.pack()

# rootを表示し無限ループ
root.mainloop()</code></pre>



<p class="wp-block-paragraph">上記ソースを表示</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="541" height="471" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_A1A0-B1B0.jpg" alt="" class="wp-image-2527" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_A1A0-B1B0.jpg 541w, https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_A1A0-B1B0-300x261.jpg 300w, https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_A1A0-B1B0-150x131.jpg 150w" sizes="(max-width: 541px) 100vw, 541px" /></figure>



<h2 class="wp-block-heading">def 文</h2>



<p class="wp-block-paragraph">Python では　関数を定義するのに &#8220;def&#8221; を用います。</p>



<p class="wp-block-paragraph">def 関数名 (引数)<br>        関数の処理内容</p>



<h2 class="wp-block-heading">Python ボタンに処理を含ませる：シリアルにA1,A0を送る</h2>



<pre class="wp-block-code"><code>
import tkinter as tk
import serial

# pySerialライブラリ、シリアルポートの一覧を取得します
# 後ほど、一覧取得に使います。
#import serial.tools.list_ports

# シリアルポートとボーレートの設定
# 接続しているデバイスのCOMポート名
# Windowsでは'COM3'など、macOSやLinuxでは'/dev/ttyACM0'など
PORT = '/dev/ttyACM0' 
BAUDRATE = 9600

# シリアル通信の初期化
# serial.Serial()を使ってシリアルポートを開きます
# ser = serial.Serial(PORT, BAUDRATE)

# 何らかのエラーで開けなかった場合は、エラーメッセージを表示します
# try-except構文を使用して、
# シリアル通信中に発生する可能性のあるエラーを捉え処理します
try:
    ser = serial.Serial(PORT, BAUDRATE)
    print(f"シリアルポート {PORT} を開きました。")
except serial.SerialException as e:
    print(f"エラー: シリアルポート {PORT} を開けませんでした。{e}")
    ser = None

# send_data関数: シリアルポートにデータを送信する汎用的な関数です
# ser.write()を使って、引数で受け取った文字列を
# バイトデータにエンコード（.encode('utf-8')）をして送信します。
def send_data(data):
    """シリアル通信でデータを送信する関数"""
    if ser and ser.is_open:
        try:
            ###ser.write(data.encode('utf-8')) # エンコードして送信
            ser.write(data.encode()) # エンコードしないで送信
            print(f"'{data}' をシリアル送信しました。")
        except serial.SerialException as e:
            print(f"エラー: データ送信中に問題が発生しました。{e}")
    else:
        print("エラー: シリアルポートが開いていません。")

# send_A1とsend_A0関数: 
# それぞれのボタンがクリックされたときに呼び出される関数（イベントハンドラ）。
# 対応する文字列をsend_dataに渡します。
def send_A1():
    """A1を送信するボタンのイベントハンドラ"""
    send_data("A1")

def send_A0():
    """A0を送信するボタンのイベントハンドラ"""
    send_data("A0")

def send_B1():
    """B1を送信するボタンのイベントハンドラ"""
    send_data("B1")

def send_B0():
    """B0を送信するボタンのイベントハンドラ"""
    send_data("B0")


# Tkinterのウィンドウを作成
root = tk.Tk()
root.title("HimadawaCoverEL制御")
#root.geometry("300x150")
root.geometry("480x280")

# tk.Button()でボタンを作成し、
# command引数にボタンがクリックされたときに実行する関数を指定します。
# button.pack()でボタンをウィンドウに配置します。
# x方向の外部間隔はpadx、y方向の外部間隔はpadyで指定します。

# A1送信ボタン
button_a1 = tk.Button(root, text="Cover開：A1", command=send_A1)
button_a1.pack(pady=10)

# A0送信ボタン
button_a0 = tk.Button(root, text="Cover閉：A0", command=send_A0)
button_a0.pack(pady=10)

# B1送信ボタン
button_b1 = tk.Button(root, text="EL点灯：B1", command=send_B1)
button_b1.pack(pady=10)

# B0送信ボタン
button_b0 = tk.Button(root, text="EL消灯：B0", command=send_B0)
button_b0.pack(pady=10)


# ウィンドウが閉じられた時に、シリアルポートも閉じるための処理をします
# ウィンドウクローズ時の処理: 
# on_closing関数は、ウィンドウが閉じられたときに呼ばれます。
# この関数内でser.close()を実行し、シリアルポートを閉じます。
def on_closing():
    """ウィンドウが閉じられたときに実行する関数"""
    if ser and ser.is_open:
        ser.close()
        print("シリアルポートを閉じました。")
    root.destroy()

# ウィンドウマネージャのイベントを処理
# ウィンドウの閉じるボタン(WM_DELETE_WINDOW)が押された時の処理を指定します
root.protocol("WM_DELETE_WINDOW", on_closing)

# イベントループ
root.mainloop()</code></pre>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Tkinterを使ったクラス化手法によるGUI</h2>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://qiita.com/michimichix521/items/4d8721aaa59e1c913d9a">https://qiita.com/michimichix521/items/4d8721aaa59e1c913d9a</a><br>クラス化は、<br>同じ手続きを繰り返さないで、つまり、同じボタンを表示するのに何度も手続きを繰り返さない為に、表示するボタンを「自分専用のボタンクラス」として定義すること。</p>



<p class="wp-block-paragraph">でも、今回は操作ボタンは4つ、シリアル選択、接続&amp;切断トグルボタンが１つなので、<br>オブジェクト指向を用いないで記述します。手続き型で記述します。</p>



<h2 class="wp-block-heading">TkinterのFrame, pack, gridをためす</h2>



<p class="wp-block-paragraph">wedget (ウィジェット)<br>ボタン、ラベル(表示)、ラジオボタンなどの　オブジェクトのこと</p>



<h2 class="wp-block-heading">制御構文や条件分岐　if文のこと</h2>



<p class="wp-block-paragraph">制御構文とは、<br>プログラムの流れを分けること</p>



<p class="wp-block-paragraph">プログラムをただ単に上から順に処理していくには、その限界があります。</p>



<p class="wp-block-paragraph">そこで、<br>・条件分岐　→　処理を分岐させる　　→　if  :　→　if と 『コロン』<br>・繰り返し　→　処理を繰り返させる　→　for と while<br></p>



<pre class="wp-block-code"><code>if 条件式 1:
    条件式 1  に行う処理
elif 条件式 2 :
    条件式 2  に行う処理
elif 条件式 3 :
    条件式 3  に行う処理
...
else:
    すべての条件式が 偽 のときに行う処理
</code></pre>



<h2 class="wp-block-heading">テキスト表示用ウィジェット</h2>



<p class="wp-block-paragraph">視覚が改善されたウィジェットを使用したい場合は<br><code>from tkinter import ttk</code></p>



<h2 class="wp-block-heading">イベントループ：「何かしてよ」&#8212; .pyより &#8212;</h2>



<p class="wp-block-paragraph"><code>mainloop()</code>メソッドは、アプリケーションを画面に表示させ続け、GUIでの入力やシステムイベントを待ち続け、イベントがあれば処理します。</p>



<ul class="wp-block-list">
<li>画像の表示：ウィンドウやウィジェット（ボタン、ラベルなど）を画面に表示し続ける</li>



<li>イベント待ち：マウスクリック、キーボード入力、ウィンドウの大きさ変更などを待つ</li>



<li>イベントを検出：発生したイベントを取得する</li>



<li>イベントの処理：ボタンを押した時やキーボード入力などの処理 (コールバック関数)を行う</li>



<li>画面の更新：必要に応じてウィジェットの表示を更新する</li>



<li>ループの継続：アプリケーションが終了するまで、上記を繰り返す</li>
</ul>



<h2 class="wp-block-heading">参考にしたURL　その1</h2>



<p class="wp-block-paragraph"></p>


<a rel="noopener" target="_blank" href="https://qiita.com/yatima9/items/03b8f1ab1b847c512540#:~:text=%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE%20%20%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E6%8E%A5%E7%B6%9A%E5%88%87%E6%96%AD%20%20%E3%83%9C%E3%83%BC%E3%83%AC%E3%83%BC%E3%83%88%E3%80%81%E3%83%87%E3%83%AA%E3%83%9F%E3%82%BF%E8%A8%AD%E5%AE%9A%20*%20%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E9%80%81%E5%8F%97%E4%BF%A1" title="tkinterで簡易シリアル通信アプリ - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkYyODM5MzUyJTJGY2M4M2QzOTM5NzJmZDNkZGU2N2ZmOTlmYzJiYTc1NGFmMzIxZTllZiUyRnhfbGFyZ2UucG5nJTNGMTcwOTUyNzE3Mj9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmYmc9RkZGRkZGJmZtPXBuZzMyJnM9ODU5MzFmYTlkYWJjMzRhMzljZjlkZGQ4MjIwYmNlNWQ%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3D87a3ac28a6efebec63179b69fde14317?ixlib=rb-4.0.0&#038;w=1200&#038;fm=jpg&#038;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9dGtpbnRlciVFMyU4MSVBNyVFNyVCMCVBMSVFNiU5OCU5MyVFMyU4MiVCNyVFMyU4MyVBQSVFMyU4MiVBMiVFMyU4MyVBQiVFOSU4MCU5QSVFNCVCRiVBMSVFMyU4MiVBMiVFMyU4MyU5NyVFMyU4MyVBQSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTc1YzcyYmJiMjcyNjFiOWFmYjg3ZWE2MmY2MDlkMDRj&#038;mark-x=120&#038;mark-y=112&#038;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB5YXRpbWE5JnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9ZWRmZDU3ZDBmZjAzYzkyMGM0ZDA4ZDIzYzdiZjM5YjQ&#038;blend-x=242&#038;blend-y=480&#038;blend-w=838&#038;blend-h=46&#038;blend-fit=crop&#038;blend-crop=left%2Cbottom&#038;blend-mode=normal&#038;s=582a078c415eec618510fd3615f4a3d8" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">tkinterで簡易シリアル通信アプリ &#8211; Qiita</div><div class="blogcard-snippet external-blogcard-snippet">つくったもの Aruduinoと通信してる様子（Arduinoは送信データをそっくりそのまま返すだけ） シリアルポートの接続切断 ボーレート、デリミタ設定 文字列の送受信 という機能だけのシンプルなアプリです。 準備 pythonで簡単にG&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/yatima9/items/03b8f1ab1b847c512540" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://askubuntu.com/questions/1408207/how-to-program-gui-for-serial-port" title="How to program GUI for serial Port" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cdn.sstatic.net/Sites/askubuntu/Img/apple-touch-icon.png?v=e16e1315edd6" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">How to program GUI for serial Port</div><div class="blogcard-snippet external-blogcard-snippet">I have a microchip and want to communicate via a GUI with it.I have Ubuntu.First step would be just having buttons that &#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://askubuntu.com/questions/1408207/how-to-program-gui-for-serial-port" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">askubuntu.com</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://www.exasub.com/embedded-system/python-programming-language/how-to-make-uart-serial-console-using-pyserial-tkinter-in-python/#:~:text=How%20to%20make%20UART%20Serial%20Console%20using%20Pyserial%2C%20Tkinter%20in%20python%20%E2%80%93%20EXASUB." title="How to make UART Serial Console using Pyserial, Tkinter in python &#8211; EXASUB" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.exasub.com%2Fembedded-system%2Fpython-programming-language%2Fhow-to-make-uart-serial-console-using-pyserial-tkinter-in-python%2F%23%3A%7E%3Atext%3DHow%2520to%2520make%2520UART%2520Serial%2520Console%2520using%2520Pyserial%252C%2520Tkinter%2520in%2520python%2520%25E2%2580%2593%2520EXASUB.?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">How to make UART Serial Console using Pyserial, Tkinter in python &#8211; EXASUB</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.exasub.com/embedded-system/python-programming-language/how-to-make-uart-serial-console-using-pyserial-tkinter-in-python/#:~:text=How%20to%20make%20UART%20Serial%20Console%20using%20Pyserial%2C%20Tkinter%20in%20python%20%E2%80%93%20EXASUB." alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.exasub.com</div></div></div></div></a>


<h2 class="wp-block-heading">参考にしたURL　その2</h2>


<a rel="noopener" target="_blank" href="https://qiita.com/tapitapi/items/1dd9c66c0dff061bcd82" title="Pythonのpyserialとthreadingでリアルタイムなシリアル通信をする。 - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkYxMjk5ODAyJTJGODdhZmUxMWZmZjQ0NDRhODU1NWM0Y2JhNWE1OTNlM2E5NmY3MDg1NCUyRnhfbGFyZ2UucG5nJTNGMTY5ODkzNTIwOT9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmYmc9RkZGRkZGJmZtPXBuZzMyJnM9YTc0ZTJlYTU3MTNjNGYzNjY4M2ZkZGZhMjdjMTU0OGU%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3D083ee77b1e4b4e6cced75dbaac7c506d?ixlib=rb-4.0.0&#038;w=1200&#038;fm=jpg&#038;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9UHl0aG9uJUUzJTgxJUFFcHlzZXJpYWwlRTMlODElQTh0aHJlYWRpbmclRTMlODElQTclRTMlODMlQUElRTMlODIlQTIlRTMlODMlQUIlRTMlODIlQkYlRTMlODIlQTQlRTMlODMlQTAlRTMlODElQUElRTMlODIlQjclRTMlODMlQUElRTMlODIlQTIlRTMlODMlQUIlRTklODAlOUElRTQlQkYlQTElRTMlODIlOTIlRTMlODElOTklRTMlODIlOEIlRTMlODAlODImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz0xYWMzNTdkOGFmNTdmNGYyNDg1ZjRlNzVhNTlhM2I1Mg&#038;mark-x=120&#038;mark-y=112&#038;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB0YXBpdGFwaSZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTVmNmQwMzdhZGMxNmM0MTIxYjNmNDZiOGQ2MTA1OTU0&#038;blend-x=242&#038;blend-y=480&#038;blend-w=838&#038;blend-h=46&#038;blend-fit=crop&#038;blend-crop=left%2Cbottom&#038;blend-mode=normal&#038;s=094616adc4a2a802ec00b18ded7681a7" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Pythonのpyserialとthreadingでリアルタイムなシリアル通信をする。 &#8211; Qiita</div><div class="blogcard-snippet external-blogcard-snippet">はじめに Raspbeiry Pi Pico等の電子デバイスをシリアル通信(UART)で制御する場合、Windows PCであれば、定番のTera Termを使えばよいが、あえてPythonでシリアル通信をする方法がないか？を調べてみたので&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/tapitapi/items/1dd9c66c0dff061bcd82" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://www.geeksforgeeks.org/python/python-gui-tkinter" title="Python Tkinter - GeeksforGeeks" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://media.geeksforgeeks.org/wp-content/uploads/20240425154445/mainloop_output.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Python Tkinter &#8211; GeeksforGeeks</div><div class="blogcard-snippet external-blogcard-snippet">Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across dom&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.geeksforgeeks.org/python/python-gui-tkinter/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.geeksforgeeks.org</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://www.geeksforgeeks.org/python/change-the-color-of-a-tkinter-label-programmatically" title="Change The Color Of A Tkinter Label Programmatically - GeeksforGeeks" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://media.geeksforgeeks.org/wp-content/uploads/20240527140021/stringcolorvalue-ezgifcom-video-to-gif-converter.gif" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Change The Color Of A Tkinter Label Programmatically &#8211; GeeksforGeeks</div><div class="blogcard-snippet external-blogcard-snippet">Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across dom&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.geeksforgeeks.org/python/change-the-color-of-a-tkinter-label-programmatically/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.geeksforgeeks.org</div></div></div></div></a>


<p class="wp-block-paragraph">youtube URL <a rel="noopener" target="_blank" href="https://www.youtube.com/watch?v=nsJtQeAFeXo&amp;t=1s">https://www.youtube.com/watch?v=nsJtQeAFeXo&amp;t=1s</a></p>



<p class="wp-block-paragraph">youtube URL <a rel="noopener" target="_blank" href="https://www.youtube.com/watch?v=9EXt69Vlm_E&amp;t=9s">https://www.youtube.com/watch?v=9EXt69Vlm_E&amp;t=9s</a></p>


<a rel="noopener" target="_blank" href="https://pythonbasics.org/tkinter-button" title="
                Tkinter buttons (GUI Programming) - Python Tutorial
            " class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fpythonbasics.org%2Ftkinter-button?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">
                Tkinter buttons (GUI Programming) &#8211; Python Tutorial
            </div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://pythonbasics.org/tkinter-button" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">pythonbasics.org</div></div></div></div></a>


<p class="wp-block-paragraph">内容を詰めずにコピー&amp;ペーストをした部分があります。<br>動作部分がそれです。一番大切な部分ですね。皆さん有難うございます。</p>



<p class="wp-block-paragraph">def toggle_connection():　<br>&#8220;&#8221;&#8221;接続、及び、切断のトグル&#8221;&#8221;&#8221;</p>



<p class="wp-block-paragraph">def send_command(command, lamp_canvas, lamp_id):<br>&#8220;&#8221;&#8221;シリアルポートにコマンドを送信し、ランプを更新する&#8221;&#8221;&#8221;</p>



<h2 class="wp-block-heading">/devデバイス選択、Class未使用、4ボタン、丸四角ステータスランプ</h2>



<pre class="wp-block-code"><code>
"""
12 2025
(c)Nakato
Himadawa Cover ELPanel USB Serial Relay Operation
貴方の必要に応じて、改変して使って下さい.
"""
# モジュール読み込み tk, messagebox, serial, serial走査
import tkinter as tk
from tkinter import ttk, messagebox
import serial
import serial.tools.list_ports

# シリアルポートオブジェクトとランプを初期化
ser = None
# キャンバスのアイテムIDを保持するためのNone変数
oval_lamp_item = None
rect_lamp_item = None

"""
"= None"
初期化時に変数に値を設定しない場合
関数が明示的に値を返さない場合
"""
def get_serial_ports():
    """利用可能なシリアルポートをリストアップする"""
    ports = serial.tools.list_ports.comports()
    return &#91;port.device for port in ports]

def update_ports():
    """ポートリストを更新してコンボボックスに反映させる"""
    port_menu&#91;'values'] = get_serial_ports()
    if get_serial_ports():
        port_menu.set(get_serial_ports()&#91;0])

def toggle_connection():
    """接続、及び、切断のトグル"""
    global ser
    if connect_button&#91;'text'] == '接続':
        port = port_menu.get()
        baudrate = int(baud_menu.get())
        if not port:
            messagebox.showerror("エラー", "接続ポートを選んで下さい。WindowsはCOM。LinuxはttyACM0など")
            return
        try:
            ser = serial.Serial(port, baudrate, timeout=1)
            connect_button.config(text='切断')
            ### messagebox.showinfo("接続", f"{port}に接続しました。") # 接続メッセージを表示するならば、コメントアウト
        except serial.SerialException as e:
            messagebox.showerror("エラー", f"接続に失敗しました: {e}")
    else:
        if ser and ser.is_open:
            ser.close()
            ser = None # シリアルを初期化
        connect_button.config(text='接続')
        ### messagebox.showinfo("切断", "シリアルポートを切断しました。") # 切断メッセージを表示するならば、コメントアウト

def send_command(command, lamp_canvas, lamp_id):
    """シリアルポートにコマンドを送信し、ランプを更新する"""
    global ser
    if ser and ser.is_open:
        try:
            ser.write(command.encode('utf-8'))
            ###response = ser.readline().decode('utf-8').strip() # 文字コード指定
            response = ser.readline().decode().strip() # 文字コード指定無し
            print(f"送信: {command}, 受信: {response}")
            
            # 受信した応答に基づいてランプの色を変更
            if response == "A1":                         # USBシリアルからの戻り値"A1"
                lamp_canvas.itemconfig(lamp_id, fill="#516AF7") # 開、時
            elif response == "A0":                       # USBシリアルからの戻り値"A0"
                lamp_canvas.itemconfig(lamp_id, fill="#584714") # 閉、時
            elif response == "B1":                       # USBシリアルからの戻り値"B1"
                lamp_canvas.itemconfig(lamp_id, fill="#CCFF00") # 点灯時
            elif response == "B0":                       # USBシリアルからの戻り値"B0"
                lamp_canvas.itemconfig(lamp_id, fill="#817E75") # 消灯時
            else:
                lamp_canvas.itemconfig(lamp_id, fill="gray") # 戻り値不明な場合は灰色
        except serial.SerialException as e:
            messagebox.showerror("通信エラー", f"データの送受信に失敗しました: {e}")
    else:
        messagebox.showwarning("接続していません", "シリアルポートを選んで下さい。")

def on_closing():
    """ウィンドウ終了時にシリアルポートを閉じる"""
    global ser
    if ser and ser.is_open:
        ser.close()
    root.destroy()

# メインウィンドウの設定
root = tk.Tk()
root.title("HimadawaCover_ELパネル制御")
root.protocol("WM_DELETE_WINDOW", on_closing) # ウィンドウ閉じるボタンでシリアルを開放する

# 接続設定エリア
connection_frame = ttk.LabelFrame(root, text="接続設定", padding="10")
connection_frame.pack(padx=10, pady=10, fill="x")

# ポートを指定
port_label = ttk.Label(connection_frame, text="接続ポート:")
port_label.grid(row=0, column=0, padx=5, pady=5, sticky="w")
port_menu = ttk.Combobox(connection_frame, state="readonly")
port_menu.grid(row=0, column=1, padx=5, pady=5, sticky="ew")

# ポートを再走査
reload_button = ttk.Button(connection_frame, text="再読込", command=update_ports)
reload_button.grid(row=0, column=2, padx=5, pady=5)

# 接続速度を指定
baud_label = ttk.Label(connection_frame, text="接続速度:")
baud_label.grid(row=1, column=0, padx=5, pady=5, sticky="w")
###baud_menu = ttk.Combobox(connection_frame, values=&#91;"9600", "19200", "38400", "57600", "115200"], state="readonly")
baud_menu = ttk.Combobox(connection_frame, values=&#91;"9600", "19200", "38400"], state="readonly")
baud_menu.set("9600") #初めは9600
baud_menu.grid(row=1, column=1, padx=5, pady=5, sticky="ew")

# 接続ボタン表示
connect_button = ttk.Button(connection_frame, text="接続", command=toggle_connection)
connect_button.grid(row=2, column=0, columnspan=3, padx=5, pady=10, sticky="ew")
update_ports()

# スイッチエリアを設定
switch_frame = ttk.LabelFrame(root, text="鏡筒カバー ELパネル 操作", padding="10")
switch_frame.pack(padx=10, pady=10, fill="x")

# カバー開閉の操作
cover_frame = ttk.Frame(switch_frame)
cover_frame.pack(pady=5, fill="x")

# カバー開閉の丸いステータスランプ
###cover_lamp_canvas = tk.Canvas(cover_frame, width=20, height=20, bg="white", relief="sunken", bd=1)
cover_lamp_canvas = tk.Canvas(cover_frame, width=25, height=25, bg="lightgray", bd=1) # キャンバスを背景色、枠無し
cover_lamp_canvas.pack(side="right", padx=10)
oval_lamp_item = cover_lamp_canvas.create_oval(2, 2, 25, 25, fill="gray", outline="black")

# カバー開閉ボタン
a1_button = ttk.Button(cover_frame, text="カバー開(A1)", command=lambda: send_command("A1", cover_lamp_canvas, oval_lamp_item))
a0_button = ttk.Button(cover_frame, text="カバー閉(A0)", command=lambda: send_command("A0", cover_lamp_canvas, oval_lamp_item))
a1_button.pack(side="left", padx=5)
a0_button.pack(side="left", padx=5)

# ELパネル点灯/消灯の操作
el_panel_frame = ttk.Frame(switch_frame)
el_panel_frame.pack(pady=5, fill="x")

# ELパネルの四角いランプ
el_panel_lamp_canvas = tk.Canvas(el_panel_frame, width=25, height=25, bg="gray", relief="sunken", bd=1)
el_panel_lamp_canvas.pack(side="right", padx=10)
rect_lamp_item = el_panel_lamp_canvas.create_rectangle(2, 2, 25, 25, fill="gray", outline="black")

# ELパネル、点灯消灯ボタン
b1_button = ttk.Button(el_panel_frame, text="ELパネル点灯(B1)", command=lambda: send_command("B1", el_panel_lamp_canvas, rect_lamp_item))
b0_button = ttk.Button(el_panel_frame, text="ELパネル消灯(B0)", command=lambda: send_command("B0", el_panel_lamp_canvas, rect_lamp_item))
b1_button.pack(side="left", padx=5)
b0_button.pack(side="left", padx=5)

# イベントループ
root.mainloop()</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="300" height="313" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_nonclass300.jpg" alt="" class="wp-image-2576" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_nonclass300.jpg 300w, https://globe3.ddns.net/wp/wp-content/uploads/2025/10/HimadawaCoverELControl_nonclass300-150x157.jpg 150w" sizes="(max-width: 300px) 100vw, 300px" /></figure>



<p class="wp-block-paragraph">Ubuntu 24 では動作しました。次は、Windows11で動作確認です。<br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://globe3.ddns.net/wp/himadawa-cover-elpanel-control-python/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu PC 天文セットアップ</title>
		<link>https://globe3.ddns.net/wp/astronomy-ubuntu-pc-setup/</link>
					<comments>https://globe3.ddns.net/wp/astronomy-ubuntu-pc-setup/#respond</comments>
		
		<dc:creator><![CDATA[minmin]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 05:11:58 +0000</pubDate>
				<category><![CDATA[INDI-Library]]></category>
		<category><![CDATA[Siril]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[天文]]></category>
		<guid isPermaLink="false">https://globe3.ddns.net/wp/?p=1874</guid>

					<description><![CDATA[ノートPCを天文趣味PCにします。インストールをメモします。 OSは、星の数ほどあるディストリビューションの一つ、GNU/Linux, Ubuntu機器制御、撮影には INDI Library + PHD2画像処理には  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ノートPCを天文趣味PCにします。インストールをメモします。<br><br>OSは、星の数ほどあるディストリビューションの一つ、GNU/Linux, Ubuntu<br>機器制御、撮影には INDI Library + PHD2<br>画像処理には Siril &amp; Python</p>



<h2 class="wp-block-heading">Ubuntu インストールメディアを用意</h2>



<p class="wp-block-paragraph">Ubuntu ミラーサイト<br><a rel="noopener" target="_blank" href="https://launchpad.net/ubuntu/+cdmirrors">https://launchpad.net/ubuntu/+cdmirrors</a></p>



<p class="wp-block-paragraph">Ubuntu リリースサイト<br><a rel="noopener" target="_blank" href="https://releases.ubuntu.com/">https://releases.ubuntu.com/</a></p>



<p class="wp-block-paragraph">ブータブルUSBの作成<br>Ubuntu : BalenaEtcher <a rel="noopener" target="_blank" href="https://github.com/balena-io/etcher/releases/">https://github.com/balena-io/etcher/releases/</a><br>Windows : <a rel="noopener" target="_blank" href="https://rufus.ie/ja/">https://rufus.ie/ja/</a></p>



<h2 class="wp-block-heading">インストール後の設定</h2>


<a rel="noopener" target="_blank" href="https://www.server-world.info/query?os=Ubuntu_24.04" title="Ubuntu 24.04 &#12452;&#12531;&#12473;&#12488;&#12540;&#12523;&#12392;&#35373;&#23450; : Server World" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.server-world.info%2Fquery%3Fos%3DUbuntu_24.04?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Ubuntu 24.04 &#12452;&#12531;&#12473;&#12488;&#12540;&#12523;&#12392;&#35373;&#23450; : Server World</div><div class="blogcard-snippet external-blogcard-snippet">Ubuntu 24.04 における各種アプリケーションのインストール方法や設定方法についてまとめています。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.server-world.info/query?os=Ubuntu_24.04" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.server-world.info</div></div></div></div></a>


<p class="wp-block-paragraph">こちらを参照しています。有り難うございます。</p>



<ul class="wp-block-list">
<li>ssh server を追加します。</li>
</ul>



<pre class="wp-block-code"><code>$ sudo apt install openssh-server</code></pre>



<ul class="wp-block-list">
<li>ホームディレクトリを英語に変更します。</li>
</ul>



<pre class="wp-block-code"><code>LANG=C xdg-user-dirs-gtk-update
若しくは
LANG=C LC_ALL=C xdg-user-dirs-gtk-update</code></pre>



<ul class="wp-block-list">
<li>Caps Lock と Ctrl を入れ替えます。GUIでの操作では、Tweaksを使います。</li>
</ul>



<pre class="wp-block-code"><code>$ sudo apt install gnome-tweaks
"キーボード" → "追加のレイアウトオプション" → "Ctrl posision" → "CtrlとCaps Lock を入れ替える"</code></pre>



<ul class="wp-block-list">
<li>バックアップから&#8221;.ファイル&#8221;をダウンロード。<br>Sirilは初期状態に戻したいので、Siril関連は外します。<br>変更や改変したスクリプトは、別に読み込ませます。</li>
</ul>



<ul class="wp-block-list">
<li>リモートデスクトップのパスワード設定。リモートデスクトップパスワードを固定にします。
<ul class="wp-block-list">
<li>リモートデスクトップを有効にし、パスワードを入れ、設定画面を閉じます。</li>



<li>&#8220;Seahorse&#8221;にある、&#8221;パスワード&#8221;→&#8221;ログイン&#8221;→&#8221;GNOME Remote Desktop RDP credentials&#8221;項目があることを確認し、これを削除します。</li>



<li>&#8220;Seahorse&#8221;にある&#8221;+&#8221;アイコンで、新規に&#8221;パスワードキーリングを追加&#8221;を行います。<br>keyring-RDP</li>



<li>&#8220;enterキー&#8221;で空パスワードを入れます。→ 暗号化していないパスワードを保存</li>



<li>&#8220;Seahorse&#8221;に先ほど追加したパスワード項目があります。<br>これを右クリックで&#8221;デフォルト&#8221;指定し、設定画面を閉じます。</li>



<li>リモートデスクトップ設定を開き、使いたいパスワードを入力し、設定画面を閉じます。</li>



<li>&#8220;Seahorse&#8221;にある、&#8221;パスワード&#8221;→&#8221;ログイン&#8221;→ 先ほど追加した項目に&#8221;GNOME Remote Desktop RDP credentials&#8221;項目があることを確認します。</li>



<li>&#8220;Seahorse&#8221;にある、&#8221;パスワード&#8221;→&#8221;ログイン&#8221;を右クリックし、デフォルトに指定します。</li>
</ul>
</li>
</ul>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">先ほど作った、&#8221;keyring-RDP&#8221;ではなく、&#8221;ログイン&#8221;をデフォルトにします。</p>
</div>



<ul class="wp-block-list">
<li>ノートPCを閉じてもサスペンドさせない</li>
</ul>



<p class="wp-block-paragraph">/etc/systemd/logind.conf を編集します。</p>



<pre class="wp-block-code"><code>/etc/systemd/logind.conf
#HandleLidSwitch=suspend                                                                                                                                                                                                                      
HandleLidSwitch=ignore</code></pre>



<p class="wp-block-paragraph">logind (systemd-logind)は、ユーザーログインを管理します。<br>設定を反映させるには、Ubuntuを再起動します。<br>若しくは、logindを再起動させます。</p>



<pre class="wp-block-preformatted">$ sudo systemctl restart systemd-logind</pre>



<h2 class="wp-block-heading">天体画像処理 Siril, Python</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://www.ubuntu.com/">Ubuntu</a> には最初からPythonがインストールされており、そのまま利用可能です。<br>しかし、このPython は、 OS がさまざまな機能を提供するために使用しています。ユーザが勝手にパッケージを導入したりすると、 OS の安定性を損なうことも考えられますので、別途、あたらしいPythonをインストールするのが一般的です。<br><a rel="noopener" target="_blank" href="https://www.python.jp/install/ubuntu/index.html">https://www.python.jp/install/ubuntu/index.html</a></p>
</blockquote>



<p class="wp-block-paragraph">先ずは、Python環境を整えます。<br>Python 3.13.7 を /usr/local/ へ入れます。<br>Sirilをソースから構築し、Python3.13の仮想環境を作り、Siril Pythonスクリプトを動かします。</p>


<a rel="noopener" target="_blank" href="https://www.python.jp/install/ubuntu/index.html" title="Ubuntu環境のPython - python.jp" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://www.python.jp/static/pythonjp/images/logo_red_120.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Ubuntu環境のPython &#8211; python.jp</div><div class="blogcard-snippet external-blogcard-snippet">Ubuntu には最初からPythonがインストールされており、そのまま利用可能です。 しかし、このPython は、 OS がさまざまな機能を提供するために使用しています。ユーザが勝手にパッケージを導入したりすると、 OS の安定性を損な&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.python.jp/install/ubuntu/index.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.python.jp</div></div></div></div></a>

<a target="_self" href="https://globe3.ddns.net/wp/python-on-ubuntu-siril-1-4-0-beta2/" title="Siril 1.4.x で Python を使うために" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/05/DSA_star-Reduction-py-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/05/DSA_star-Reduction-py-160x90.jpg 160w, https://globe3.ddns.net/wp/wp-content/uploads/2025/05/DSA_star-Reduction-py-120x68.jpg 120w, https://globe3.ddns.net/wp/wp-content/uploads/2025/05/DSA_star-Reduction-py-320x180.jpg 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Siril 1.4.x で Python を使うために</div><div class="blogcard-snippet internal-blogcard-snippet">Ubuntu24にインストールした、Siril 1.4.0-beta2で Python を使います。Python仮想環境を指定して、活性化させSirilを起動すると、Siril Pythonモジュールがインストールされ、Pythonスクリプトが使えます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://globe3.ddns.net/wp" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">globe3.ddns.net</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.05.11</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://peps.python.org/pep-0668" title="PEP 668 – Marking Python base environments as “externally managed” | peps.python.org" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://peps.python.org/_static/og-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">PEP 668 – Marking Python base environments as “externally managed” | peps.python.org</div><div class="blogcard-snippet external-blogcard-snippet">A long-standing practical problem for Python users has been conflicts between OS package managers and Python-specific pa&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://peps.python.org/pep-0668/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">peps.python.org</div></div></div></div></a>


<p class="wp-block-paragraph">参照URL<br><a rel="noopener" target="_blank" href="https://qiita.com/keith_campbell/items/e7dc4afc44527b802f6e">https://qiita.com/keith_campbell/items/e7dc4afc44527b802f6e</a><br><a rel="noopener" target="_blank" href="https://qiita.com/AzukiImo/items/5c6dd7e870c9965e41f3">https://qiita.com/AzukiImo/items/5c6dd7e870c9965e41f3</a><br><a rel="noopener" target="_blank" href="https://zenn.dev/eng_ryosan/articles/a635346a3123d3">https://zenn.dev/eng_ryosan/articles/a635346a3123d3</a><br></p>



<p class="wp-block-paragraph">Siril Appimage を動かすには、Ubuntu 24では、&#8221;libfuse2t64&#8243; が必要です。</p>



<p class="wp-block-paragraph">ソースからSiril を構築して、β版も使えます。</p>


<a target="_self" href="https://globe3.ddns.net/wp/try-siril-development-edition-1-4-0/" title="Siril 開発版を試してみよう" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1-160x90.jpg 160w, https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1-300x169.jpg 300w, https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1-120x68.jpg 120w, https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1-320x180.jpg 320w, https://globe3.ddns.net/wp/wp-content/uploads/2025/04/Siril-1.4.0-beta1.jpg 702w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Siril 開発版を試してみよう</div><div class="blogcard-snippet internal-blogcard-snippet">Siril開発版が使えます。SPCC、GHS、モザイクに有用なプレートソルビングの歪み補正が使えます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://globe3.ddns.net/wp" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">globe3.ddns.net</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.04.18</div></div></div></div></a>


<p class="wp-block-paragraph">Sirilを起動すると、Python仮想環境が作られます。</p>



<pre class="wp-block-code"><code>Last available version: 1.4.0-beta3
log: Preparing python virtual environment: /home/USRNAME/.local/share/siril/venv.
log: Checking the python module is up-to-date...
log: Installing / updating python module in the background. This may take a few seconds...
log: Repository cloned successfully!
Processing /home/USERNAME/.local/share/siril/.python_module
log: Repository cloned successfully!</code></pre>



<p class="wp-block-paragraph">Siril Python スクリプトを導入すると、<br>/home/USERNAME/.local/share/siril-scripts/preprocessing/<br>などに置かれます。</p>



<h2 class="wp-block-heading">Cosmic Clarity Suite Siril Pythonスクリプトを English 環境で動かす。</h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">Cosmic Clarity Suite Siril Pythonスクリプトは、Ubuntu24では システムの文字セットがJapaneseだと動きませんでした。</p>
</div>


<a target="_self" href="https://globe3.ddns.net/wp/astronomical-image-processing-flow-siril-1-4-cosmic-clarity-suite-6-3-ngc-925-ngc7814-2024/" title="Siril と Cosmic Clarity Suite, 天体画像処理の流れ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/06/siril1.4.3-setiastro-cosmic-clarity-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/06/siril1.4.3-setiastro-cosmic-clarity-160x90.jpg 160w, https://globe3.ddns.net/wp/wp-content/uploads/2025/06/siril1.4.3-setiastro-cosmic-clarity-120x68.jpg 120w, https://globe3.ddns.net/wp/wp-content/uploads/2025/06/siril1.4.3-setiastro-cosmic-clarity-320x180.jpg 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Siril と Cosmic Clarity Suite, 天体画像処理の流れ</div><div class="blogcard-snippet internal-blogcard-snippet">Siril-1.4.0, StarNet, Cosmic Clarity SuiteVersion 6.3 を用いた天体画像処理の流れ。NGC 925、NGC7814を撮影、画像処理しました。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://globe3.ddns.net/wp" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">globe3.ddns.net</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.06.03</div></div></div></div></a>


<p class="wp-block-paragraph">Franklin Marekさんに問い合わせすると、Linux では nividia のみ使えるそうです。<br>IntelやAMD製GPUユニットが使えるように、リクエストしてみようかな。</p>



<h2 class="wp-block-heading">Teensyduino シリアル通信 : Althiba 3 接続</h2>



<p class="wp-block-paragraph">AlThiba (マチナカリモート天文台製のコントローラー)は、&#8221;TeenAstro Mount&#8221;で動かします。<br>Teen Astro Mount INDI Driver&#8221;は、&#8221;indi-bin&#8221;に含まれています。</p>



<p class="wp-block-paragraph">Althiba3 をUSB接続し、logを見ると、cdc acm ドライバで動かすようです。<br>さらに、ModemManager がデバイスを制御しようとしている。</p>



<pre class="wp-block-code"><code>
kernel: usb 1-1: new high-speed USB device number 10 using xhci_hcd
kernel: usb 1-1: config 1 interface 1 altsetting 0 bulk endpoint 0x3 has invalid maxpacket 64
kernel: usb 1-1: config 1 interface 1 altsetting 0 bulk endpoint 0x84 has invalid maxpacket 64
kernel: usb 1-1: New USB device found, idVendor=16c0, idProduct=0483, bcdDevice= 2.79
kernel: usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 1-1: Product: USB Serial
kernel: usb 1-1: Manufacturer: Teensyduino
kernel: usb 1-1: SerialNumber: 7939030
kernel: cdc_acm 1-1:1.0: ttyACM0: USB ACM device
mtp-probe: checking bus 1, device 10: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1"
mtp-probe: bus: 1, device: 10 was not an MTP device
snapd&#91;984]: hotplug.go:206: hotplug device add event ignored, enable experimental.hotplug
mtp-probe: checking bus 1, device 10: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1"
mtp-probe: bus: 1, device: 10 was not an MTP device
ModemManager&#91;1143]: &lt;msg&gt; &#91;base-manager] couldn't check support for device '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1': not supported by any plugin</code></pre>



<pre class="wp-block-code"><code>ModemManagerを止める？
systemctl stop ModemManager
それよりもModemManagerを削除しよう。モデムは使わない。。。
$ sudo apt remove modemmanager</code></pre>



<p class="wp-block-paragraph">/dev以下を見ると、</p>



<pre class="wp-block-code"><code>$ ls -l /dev/tty
crw-rw----   1 root   dialout 166,   0  9月 13 20:51 ttyACM0</code></pre>



<p class="wp-block-paragraph">dialoutグループで制御が出来るので、ユーザーアカウントをdialoutグループに登録します。</p>



<pre class="wp-block-code"><code>$ sudo adduser ${USER} dialout
もしくは、
S sudo usermod -a -G dialout ${USER}</code></pre>



<p class="wp-block-paragraph">KStarsを動かし、&#8221;/dev/ttyUSB0が無いよ&#8221; とエラーが表示されたならば、<br>USB接続を確認した、/dev/ttyACM0 にシンボリックシンクを作ります。<br>Ubuntu 24.04では必要ありませんでした。</p>



<pre class="wp-block-code"><code>$ sudo ln -s /dev/ttyACM0 /dev/ttyUSB0</code></pre>



<h2 class="wp-block-heading">天文機器制御 INDI library</h2>


<a rel="noopener" target="_blank" href="https://indilib.org" title="Home" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Findilib.org?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Home</div><div class="blogcard-snippet external-blogcard-snippet">INDI Library provides a framework for control and automation of astronomical instruments.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://indilib.org/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">indilib.org</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://indilib.org/download/ubuntu/category/3-ubuntu.html" title="Ubuntu" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Findilib.org%2Fdownload%2Fubuntu%2Fcategory%2F3-ubuntu.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Ubuntu</div><div class="blogcard-snippet external-blogcard-snippet">INDI Library provides a framework for control and automation of astronomical instruments.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://indilib.org/download/ubuntu/category/3-ubuntu.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">indilib.org</div></div></div></div></a>


<p class="wp-block-paragraph">INDI library を使って、Althiba3, ZWO Camera, ZWO EAF を制御し、銀河などを撮像します。</p>



<pre class="wp-block-code"><code>INDI Library 安定版を入れます。
sudo apt-add-repository ppa:mutlaqja/ppa
sudo apt update
sudo apt install libindi1 indi-bin kstars-bleeding gsc
ZWOカメラを使うので、
sudo apt install indi-asi</code></pre>



<p class="wp-block-paragraph">libindi1, indi-bin は基本ドライバー、Ekos と GSCを入れます。<br>GSCは、&#8221;Hubble Space Telescope, Guide Catalog&#8221;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">恒星のカタログです。恒星の位置とその等級が含まれています。<br>ハッブル宇宙望遠鏡の運用するために、16等級よりも明るい恒星が、約1900万の恒星が登録されています。<br><a rel="noopener" target="_blank" href="https://heasarc.gsfc.nasa.gov/w3browse/all/gsc.html">https://heasarc.gsfc.nasa.gov/w3browse/all/gsc.html</a></p>
</blockquote>



<p class="wp-block-paragraph">このカタログとINDI libraryシミュレーションを用いて、星空が無くても動作確認ができます。</p>



<p class="wp-block-paragraph">別のパッケージを上書きしようとするパッケージに関するエラーが発生した場合は、</p>



<pre class="wp-block-code"><code>sudo apt-get -o Dpkg::Options::="--force-overwrite" -f install</code></pre>



<h2 class="wp-block-heading">Kstars</h2>



<p class="wp-block-paragraph">Kstarsを動かします。<br>Ekos へ機器のプロファイルと、その構成をトレインとして登録します。</p>



<p class="wp-block-paragraph">File Settings<br>撮影画像ディレクトリ、及び名前形式を決めます。</p>


<a rel="noopener" target="_blank" href="https://kstars-docs.kde.org/ja/user_manual/ekos-capture.html#file-settings" title="Capture" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fkstars-docs.kde.org%2Fja%2Fuser_manual%2Fekos-capture.html%23file-settings?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Capture</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://kstars-docs.kde.org/ja/user_manual/ekos-capture.html#file-settings" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">kstars-docs.kde.org</div></div></div></div></a>


<p class="wp-block-paragraph">%f (ファイル名): 拡張子を除いた .esq ファイルの名前<br>%D (日付/時刻): ファイルが保存された時刻と日付<br>%T (タイプ): フレームのタイプ (例: &#8220;Light&#8221;、&#8221;Dark &#8220;など)<br>%e (露出): 露光時間（秒）<br>%F (フィルター): 使用するフィルター名<br>%t (ターゲット): ターゲット名<br>%s (シーケンス): イメージ シーケンスの識別子。* は使用される桁数 (1 ～ 9) です。 このタグは必須であり、形式の最後の要素である必要があります。<br>サフィックス: ファイル名にシーケンス番号を追加するために使用される桁数</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p class="wp-block-paragraph">例えば次の様に指定します。<br>Format: /%T/%t/%t_%T_%F_%e_%D<br>撮影画像名は、指定されたディレクトリに、次のディレクトリ名、ファイル名になります。<br>/Light/M1/M1_Light_HEUIB-II_180_secs_2025-09-15T23-51-16_001.fits</p>
</div>



<h2 class="wp-block-heading">Ekos Auto Focus 設定</h2>



<p class="wp-block-paragraph">EAFの働きが今ひとつなので、ドキュメントを見てみよう。</p>


<a rel="noopener" target="_blank" href="https://docs.kde.org/trunk5/en/kstars/kstars/ekos-focus.html" title="Focus" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.kde.org%2Ftrunk5%2Fen%2Fkstars%2Fkstars%2Fekos-focus.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Focus</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.kde.org/trunk5/en/kstars/kstars/ekos-focus.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.kde.org</div></div></div></div></a>


<p class="wp-block-paragraph">動作原理</p>



<p class="wp-block-paragraph"><strong>Linear 1 Pass</strong>:<br>EkosがVカーブを確立し、データに曲線を当てはめて焦点解を求めます。その後、計算された最小値へ移動します<br>　アルゴリズムはフォーカサーのバックラッシュを補正します。<br>　アルゴリズムは高速で、1回のパスで最適焦点位置を特定します。</p>



<p class="wp-block-paragraph">フォーカサーが再現性のある動作（位置Xへの移動指令時に常に同一位置に移動する）を示す場合、このアルゴリズムが最適です。</p>



<p class="wp-block-paragraph"><strong>Linear</strong>:<br>線形アルゴリズムでは、Ekosは開始点から外側へ移動し、最適焦点を経由して規則的なデータポイントを採取しながら内側へ移動し、さらに内側へ進みV字曲線を描画します。その後、データポイントに二次曲線をフィットさせ、最適焦点を算出します。<br>次に再び最適焦点点を越えて外側へ移動し、ステップサイズを半分にして再度内側へ移動し、第二パスを実行します。第1パスで描かれた曲線に沿い、最小HFR値を検出します。HFR測定値のランダム性を考慮し、許容誤差を用いて最適焦点の決定を支援します。</p>



<p class="wp-block-paragraph">　フォーカサーのバックラッシュを補正します。<br>　アルゴリズムは低速で、最適焦点の特定に2パスを要します。<br>　アルゴリズムは1回目で曲線フィッティングを用いて最適焦点位置を特定し、<br>　2回目では許容誤差を用いて、このHFR値に可能な限り接近して停止を試みます。</p>



<p class="wp-block-paragraph">フォーカサーの動作が不安定な場合（例：フォーカス位置への移動させた時に、実際の位置に変動がある場合）、このアルゴリズムは変動に対する許容値を内蔵しているため最適です。</p>



<ul class="wp-block-list">
<li>Donut Buster (食べられるドーナツを防ぐではなく、環状の星像を防ぎます)
<ul class="wp-block-list">
<li>Time Dilation x:　オートフォーカス実行時にデータポイントごとに露出時間を変える。<br>焦点が合ってないので、HFRは大きくなり、ピーク強度は低い。<br>数値を増やして、背景に埋もれることを防げる。</li>



<li>Outlier Rejection: V曲線の数値から外れた場合を除く。数値を高くしないのが良い？</li>
</ul>
</li>



<li>Scan for Start Position
<ul class="wp-block-list">
<li><br></li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">EAFの働きが今ひとつなので、ソースを見てみよう。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://github.com/KDE/kstars">https://github.com/KDE/kstars</a><br><a rel="noopener" target="_blank" href="https://github.com/KDE/kstars/tree/master/kstars/ekos/focus">https://github.com/KDE/kstars/tree/master/kstars/ekos/focus</a></p>



<p class="wp-block-paragraph">kstars/ekos/focus</p>



<p class="wp-block-paragraph">Focus Process</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">PHD2: Ubuntu 24.04 + PHD2 v2.6.13</h2>


<a rel="noopener" target="_blank" href="https://openphdguiding.org" title="
		    - PHD2 Guiding	" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fopenphdguiding.org?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">
		    &#8211; PHD2 Guiding	</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://openphdguiding.org" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">openphdguiding.org</div></div></div></div></a>


<p class="wp-block-paragraph">Download -&gt; Building PHD2 on Linux<br>こちらを参考にソースから構築します。</p>


<a rel="noopener" target="_blank" href="https://github.com/OpenPHDGuiding/phd2/wiki/BuildingPHD2OnLinux" title="BuildingPHD2OnLinux" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://opengraph.githubassets.com/0cdaa3726328d67e8e6e85ab8d60d5a447995c985414706fd584d8461df6fb08/OpenPHDGuiding/phd2" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">BuildingPHD2OnLinux</div><div class="blogcard-snippet external-blogcard-snippet">PHD2 Guiding. Contribute to OpenPHDGuiding/phd2 development by creating an account on GitHub.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/OpenPHDGuiding/phd2/wiki/BuildingPHD2OnLinux" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>


<p class="wp-block-paragraph">依存関係のパッケージをインストール</p>



<p class="wp-block-paragraph">INDI Libraryも必要になります。</p>



<pre class="wp-block-code"><code>sudo apt install build-essential git cmake pkg-config libwxgtk3.2-dev \
   wx-common wx3.2-i18n libindi-dev libnova-dev gettext zlib1g-dev libx11-dev \
   libcurl4-gnutls-dev libopencv-dev libeigen3-dev libgtest-dev</code></pre>



<p class="wp-block-paragraph">PHD2 v2.6.13 のソースを入手し make していきます。</p>



<pre class="wp-block-code"><code>git clone https://github.com/OpenPHDGuiding/phd2.git
cd phd2
mkdir -p tmp
cd tmp
cmake ..
make
sudo make install</code></pre>



<p class="wp-block-paragraph">PHD2 v2.6.13 では、<br>「ファイルが無いよ」とエラーが出たので、適宜、必要なディレクトリにコピーしました。</p>



<pre class="wp-block-code"><code>does not exist
Visualization.htm
Trouble_shooting.htm
Glossary.html
Tutorials.htm</code></pre>



<p class="wp-block-paragraph">cmake, make, sudo make install 構築しインストールしたプログラム等を削除するには、<br>インストールしたファイルリストがビルドディレクトリに &#8220;install_manifest.txt&#8221; に書き出されます。</p>



<pre class="wp-block-code"><code>$ xargs sudo rm -rf &lt; install_manifest.txt</code></pre>



<p class="wp-block-paragraph">PHD2 v2.6.12 の場合も同じように構築、インストールし、ログを保存しました。<br>古いソースは、手元に残すべきと思いました。</p>



<p class="wp-block-paragraph">もしも、下記のエラーが表示されたならば、cfitsioライブラリがインストールされていません。</p>



<pre class="wp-block-code"><code>CMake Error in contributions/MPI_IS_gaussian_process/CMakeLists.txt:
  Found relative path while evaluating include directories of
  "GuidePerformanceEval":

    "CFITSIO_INCLUDE_DIR-NOTFOUND"</code></pre>



<p class="wp-block-paragraph">次のコマンドで、libcfitsioライブラリを入れます。</p>



<pre class="wp-block-code"><code>$ sudo apt-get install libcfitsio-dev</code></pre>



<h2 class="wp-block-heading">余談</h2>



<p class="wp-block-paragraph">何度もインストールを行うのでメモを残します。システムを壊して、再インストール時にも役立ちます。もちろん&#8221;.ファイル&#8221;を含めたバックアップは必要です。</p>



<p class="wp-block-paragraph">天体撮影に使うノートPCは、いい加減なジャンクPCを使ってます。元がジャンクなので壊れそう。そろそろ買い換えと思い、量販店へ行って実機を見回すと、スリムなノートPCが並んでいる。<br>裏側のネジ数本外し、メモリやSSDを簡単に交換出来なさそう。交換に困る前に、現行物を入手しようか。。。いや、、もぅ困っています。<br></p>



<h2 class="wp-block-heading">ホームディレクトリを残して、再インストール</h2>



<p class="wp-block-paragraph">「推奨するプロプライエタリなソフトウェア」では、&#8221;グラフィックス&#8221;、&#8221;wi-Fi&#8221;、&#8221;メディアフォーマット&#8221;を選択しない。<br>選択すると以前のファイルシステムをフォーマットせずにインストール選択へ進めないようです。</p>



<p class="wp-block-paragraph">ブートローダーをインストールするデバイスを、先ずは選択する。<br>自動で /boot/efi が設定されるようです。ところが、現状でこちらのPC環境では、インストールが完了しません。</p>



<h2 class="wp-block-heading">Intel CPU内蔵 GPUドライバ</h2>



<p class="wp-block-paragraph">UbuntuでもGPUを使って、天文画像処理を行いたい。</p>


<a rel="noopener" target="_blank" href="https://dgpu-docs.intel.com/driver/client/overview.html" title="Installing Client GPUs &mdash; Intel&#174; software for general purpose GPU capabilities  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdgpu-docs.intel.com%2Fdriver%2Fclient%2Foverview.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Installing Client GPUs &mdash; Intel&#174; software for general purpose GPU capabilities  documentation</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://dgpu-docs.intel.com/driver/client/overview.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">dgpu-docs.intel.com</div></div></div></div></a>


<p class="wp-block-paragraph">ローカルパッケージインデックスを更新し、ソフトウェアリポジトリを管理するためのパッケージをインストールします。</p>



<pre class="wp-block-code"><code>sudo apt-get update
sudo apt-get install -y software-properties-common</code></pre>



<p class="wp-block-paragraph">intel-graphics PPAを追加</p>



<pre class="wp-block-code"><code>sudo add-apt-repository -y ppa:kobuk-team/intel-graphics</code></pre>



<p class="wp-block-paragraph">コンピューティング関連のパッケージをインストールします。</p>



<pre class="wp-block-code"><code>sudo apt-get install -y libze-intel-gpu1 libze1 intel-metrics-discovery intel-opencl-icd clinfo intel-gsc</code></pre>



<p class="wp-block-paragraph">メディア関連のパッケージをインストールしてください。</p>



<pre class="wp-block-code"><code>sudo apt-get install -y intel-media-va-driver-non-free libmfx-gen1 libvpl2 libvpl-tools libva-glx2 va-driver-all vainfo</code></pre>



<p class="wp-block-paragraph">PyTorchを使用する場合は、追加でlibze-devとintel-oclocをインストールしてください</p>



<pre class="wp-block-code"><code>sudo apt-get install -y libze-dev intel-ocloc</code></pre>



<p class="wp-block-paragraph">ハードウェアレイトレーシングのサポートを有効にしたい場合は、追加で libze-intel-gpu-raytracing をインストール</p>



<pre class="wp-block-code"><code>sudo apt-get install -y libze-intel-gpu-raytracing</code></pre>



<p class="wp-block-paragraph">カーネルと計算ドライバーがインストールされ正常に動作していることを確認するには、clinfo を実行してください</p>



<pre class="wp-block-code"><code>clinfo | grep "Device Name"</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Intelグラフィックス製品のデバイス名が表示されているはずです。表示されない場合は、/dev/dri/renderD* へのアクセス権限があることを確認してください。通常、これにはユーザーが render グループに属している必要があります：</p>
</blockquote>



<pre class="wp-block-code"><code>$ ls -l /dev/dri/render*
crw-rw----+ 1 root render 226, 128 10月  1 14:52 /dev/dri/renderD128</code></pre>



<pre class="wp-block-code"><code>sudo gpasswd -a ${USER} render
newgrp render</code></pre>


<a rel="noopener" target="_blank" href="https://qiita.com/yamakenjp/items/36c28163a40445146f7f" title="intel Arc GPUでHWEncode環境 - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGNTQyMDUlMkZwcm9maWxlLWltYWdlcyUyRjE2NzU4NTY2MDY_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTE5OTk2NjE2OGJlMzhjNTlmMjNiYmE2ZjQ4YjVmZTVj%26blend-x%3D120%26blend-y%3D462%26blend-w%3D90%26blend-h%3D90%26blend-mode%3Dnormal%26mark64%3DaHR0cHM6Ly9xaWl0YS1vcmdhbml6YXRpb24taW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1vcmdhbml6YXRpb24taW1hZ2UlMkYxNmJlMjM1NTQ4MjZkOGE4NDRiNzQwMTg3MGM2OTNhOGE2YmUwOWI1JTJGb3JpZ2luYWwuanBnJTNGMTQ4MjgwNzAwNz9peGxpYj1yYi00LjAuMCZ3PTQ0Jmg9NDQmZml0PWNyb3AmbWFzaz1jb3JuZXJzJmNvcm5lci1yYWRpdXM9OCZiZz1GRkZGRkYmYm9yZGVyPTIlMkNGRkZGRkYmZm09cG5nMzImcz03MjI1NTIwY2ViZTkzMTMwNTdiOTA0MTQxMjE3YTg0YQ%26mark-x%3D186%26mark-y%3D515%26mark-w%3D40%26mark-h%3D40%26s%3D3ffb25131e42b43c274abde4935b5e65?ixlib=rb-4.0.0&#038;w=1200&#038;fm=jpg&#038;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9aW50ZWwlMjBBcmMlMjBHUFUlRTMlODElQTdIV0VuY29kZSVFNyU5MiVCMCVFNSVBMiU4MyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTM2NjkxNWZjYmM5YzJhZGE1OTI4NDU0M2QzYmFmMjYz&#038;mark-x=120&#038;mark-y=112&#038;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB5YW1ha2VuanAmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz0zYTM3ZjQ2NTgyZTJhMDYwZWFhNGNmMTgxZjFjYmY4ZQ&#038;blend-x=242&#038;blend-y=454&#038;blend-w=838&#038;blend-h=46&#038;blend-fit=crop&#038;blend-crop=left%2Cbottom&#038;blend-mode=normal&#038;txt64=44GV44GP44KJ44Kk44Oz44K_44O844ON44OD44OI5qCq5byP5Lya56S-&#038;txt-x=242&#038;txt-y=539&#038;txt-width=838&#038;txt-clip=end%2Cellipsis&#038;txt-color=%233A3C3C&#038;txt-font=Hiragino%20Sans%20W6&#038;txt-size=28&#038;s=f7770db429ee267eae07774608d2ada6" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">intel Arc GPUでHWEncode環境 &#8211; Qiita</div><div class="blogcard-snippet external-blogcard-snippet">さくらのアドベントカレンダー2022 20日目の記事です。 どうも、さくらインターネット やまけんです。 2日目で さくらのクラウドでUniFi Network Applicationを動かす こちらの紹介をしましたが、今度はGPUでのハー&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/yamakenjp/items/36c28163a40445146f7f" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>]]></content:encoded>
					
					<wfw:commentRss>https://globe3.ddns.net/wp/astronomy-ubuntu-pc-setup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress, Ubuntu 24.04.2 LTS</title>
		<link>https://globe3.ddns.net/wp/wordpress-ubuntu-24-04-2-lts/</link>
					<comments>https://globe3.ddns.net/wp/wordpress-ubuntu-24-04-2-lts/#respond</comments>
		
		<dc:creator><![CDATA[minmin]]></dc:creator>
		<pubDate>Mon, 21 Apr 2025 09:01:26 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://globe3.ddns.net/wp/?p=427</guid>

					<description><![CDATA[ブログツール WordPressを Ubuntu に入れて使います。Ubuntu + Apache2 +SSL + PHP + MySQL + WordPress を組み合わせます。phpMyAdminも使います。 ht [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ブログツール WordPressを Ubuntu に入れて使います。<br>Ubuntu + Apache2 +SSL + PHP + MySQL + WordPress を組み合わせます。<br>phpMyAdminも使います。<br><br><a rel="noopener" target="_blank" href="https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=httpd2&amp;f=4">https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=httpd2&amp;f=4</a><br>こちらを参考にしています。まとまっていて、有り難いです。</p>



<h2 class="wp-block-heading">Ubuntu ネット、日本語、watchdog、 など</h2>



<p class="wp-block-paragraph">Raspberry Pi での Watchdogの設定には、<br><a rel="noopener" target="_blank" href="https://raspida.com/setup-watchdog-pi5-bookworm/">https://raspida.com/setup-watchdog-pi5-bookworm/</a>　を参照させて頂きました。 </p>



<pre class="wp-block-code"><code>/etc/systemd/system.conf
#RuntimeWatchdogSec=off
 ↓
 RuntimeWatchdogSec=10</code></pre>



<h2 class="wp-block-heading">Apache2 + SSL</h2>



<pre class="wp-block-code"><code>$ apt install apache2
$ systemctl is-enabled apache2 ← enabledを確認
$ sudo a2enmod ssl ← sslモジュール追加
$ sudo systemctl restart apache2 ← 案内に従いapache2を再スタート
$ sudo a2ensite default-ssl ← sslモジュールを有効化
$ sudo apt install nmap
$ nmap localhost ← 443 ポートを確認</code></pre>



<h2 class="wp-block-heading">PHP</h2>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=php&amp;f=1">https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=php&amp;f=1</a><br><a rel="noopener" target="_blank" href="https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=httpd&amp;f=7">https://www.server-world.info/query?os=Ubuntu_24.04&amp;p=httpd&amp;f=7</a> を参考にしています。</p>



<pre class="wp-block-code"><code>$ sudo apt install php php-mbstring php-pear libapache2-mod-php php-mysql php-fpm php-xmlrpc php-soap php-intl</code></pre>



<pre class="wp-block-code"><code>$ sudo cp -p /etc/php/8.3/apache2/php.ini /etc/php/8.3/apache2/php.ini.$(date +%Y%m%d)

/etc/php/8.3/apache2/php.ini ←　編集
;;; memory_limit = 128M                                                                                                            
memory_limit = 256M

;;; post_max_size = 8M                                                                                                             
post_max_size = 128M

;;;upload_max_filesize = 2M                                                                                                        
upload_max_filesize = 64M

;;; date.timezone =                                                                                                                
date.timezone = "Asia/Tokyo"

;;; mbstring.language = Japanese                                                                                                   
mbstring.language = Japanese

;;; mbstring.internal_encoding =                                                                                                   
mbstring.internal_encoding = UTF-8

;;; mbstring.http_input =                                                                                                          
mbstring.http_input = UTF-8

;;; mbstring.http_output =                                                                                                         
mbstring.http_output = pass

;;; mbstring.encoding_translation = Off                                                                                            
mbstring.encoding_translation = On

;;; mbstring.detect_order = auto                                                                                                   
mbstring.detect_order = auto

;;; mbstring.substitute_character = none                                                                                           
mbstring.substitute_character = none
</code></pre>



<pre class="wp-block-code"><code>$ sudo cp -p /etc/php/8.3/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/www.conf.$(date +%Y%m%d)

/etc/php/8.3/fpm/pool.d/www.conf ← 編集

;;;listen.mode = 0660
listen.mode = 0660

;;; pm.max_children = 5
pm.max_children = 25

;;; pm.start_servers = 2
pm.start_servers = 10

;;; pm.min_spare_servers = 1
pm.min_spare_servers = 10

;;; pm.max_spare_servers = 3
pm.max_spare_servers = 20

;;; pm.max_requests = 500                                                                                                          
pm.max_requests = 500

;;; pm.max_requests = 500                                                                                                          
pm.max_requests = 500</code></pre>



<pre class="wp-block-code"><code>$ systemctl list-unit-files --type=service | grep "php" ← php-fpm 起動設定を確認
$ sudo systemctl restart php8.3-fpm
$ sudo systemctl status apache2</code></pre>



<pre class="wp-block-code"><code>/var/www/html/phpinfo.php
&lt;?php
phpinfo();
?&gt;</code></pre>



<pre class="wp-block-code"><code>https://localhost/phpinfo.php ← php動作確認</code></pre>



<h2 class="wp-block-heading">MySQL</h2>



<pre class="wp-block-code"><code>$ sudo apt install mysql-client mysql-server</code></pre>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://qiita.com/ucan-lab/items/c80fb8a880679fa20162">MySQL 8.0 初期設定</a> こちらを参照し設定ファイルを作成します。有難うございます。<br>/etc/my.cnf を作成します。</p>



<pre class="wp-block-code"><code>/etc/my.cnf

&#91;mysqld]
character_set_server = utf8mb4 # 文字コード
collation_server = utf8mb4_ja_0900_as_cs # 照合順序

# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# Error Log
log-error = /var/log/mysql/mysql-error.log

# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0

# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log

&#91;mysql]
default-character-set = utf8mb4

&#91;client]
default-character-set = utf8mb4</code></pre>



<pre class="wp-block-code"><code>$ sudo systemctl restart mysql ← MySQL再起動</code></pre>



<p class="wp-block-paragraph">&#8220;mysql_secure_installation&#8221; はMySQL 8.0では、必要無しとの記事を上げている方が、いらっしゃる。<br>次のコマンドで、&#8221;mysql_secure_installation&#8221;の操作内容を見てみよう。<br>mysql&gt; select user, host from mysql.user; ← ユーザー、ホスト名を確認<br>mysql&gt; show databases; ← databasesを確認<br><br>Remove anonymous users? 匿名ユーザーは無し<br>Disallow root login remotely? localhost 以外の host指定は無し<br>Remove test database and access to it? testデーターベースは無し<br>「test」テーブルと「test_」から始まるテーブルに対してアクセス権限は存在していない。</p>



<p class="wp-block-paragraph">パスワード認証方式の違い<br>$ mysql -u root -p            ← これでmysqlに接続できない<br>$ sudo mysql -u root -p  ← これでmysqlに接続できる<br> </p>



<pre class="wp-block-code"><code>$ sudo mysql -u root
$ mysql&gt; status ←mysqlの状態を確認
mysql&gt; select user, host from mysql.user; ← ユーザー、ホスト名を確認
mysql&gt; show databases; ← databasesを確認
mysql&gt; CREATE DATABASE wp DEFAULT CHARACTER SET utf8; ← WordPressデーターベース作成
mysql&gt; use wp;
mysql&gt; CREATE USER 'wp'@'localhost' IDENTIFIED BY '&#91;password]'; ← WordPressユーザ作成
mysql&gt; SELECT user,host FROM mysql.user; ← ユーザー確認
mysql&gt; GRANT ALL ON wp.* TO 'wp'@'localhost' WITH GRANT OPTION; ← ユーザー権限設定
mysql&gt; FLUSH PRIVILEGES;
mysql&gt; CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8; ← phpmyadminデーターベース作成
mysql&gt; use phpmyadmin;
mysql&gt; CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY '&#91;password]';
mysql&gt; GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
mysql&gt; SELECT user,host FROM mysql.user; ← ユーザー確認
mysql&gt; FLUSH PRIVILEGES;</code></pre>



<h2 class="wp-block-heading">WordPress</h2>



<pre class="wp-block-code"><code>$ cd /var/www/html
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz ← WordPressをダウンロード
$ sudo tar xvf latest-ja.tar.gz ← 展開
$ sudo mv wordpress wp ← 適宜な名前に変更
$ sudo chown www-data:www-data -R wp</code></pre>



<p class="wp-block-paragraph">http://localhost(ip number)/wp/wp-admin/setup-config.php<br>[データベース名]: wp<br>[ユーザー名]: wp<br>[パスワード]: *****************************<br>[データーベースのホスト名]: localhost<br>[送信]を押してエラーが出る際は、mysqlの設定を見直す。名前や権限を見直す。</p>



<h2 class="wp-block-heading">エラー対処には、サーバー側設定で可能な限り対処したい</h2>



<h2 class="wp-block-heading">落ち穂拾い： [REST API でエラーが発生しました] </h2>



<p class="wp-block-paragraph">[REST API でエラーが発生しました] [サイトでループバックリクエストが完了できませんでした]</p>



<pre class="wp-block-code"><code>$ curl https://globe3.ddns.net/wp/wp-json/wp/v2/types/post?context=edit ← REST API エンドポイントに対して行う
curl: (28) Failed to connect to globe3.ddns.net port 443 after 132704 ms: Couldn't connect to server</code></pre>



<p class="wp-block-paragraph">タイムアウトしたのは、サーバー自身のドメイン名を解決できないらしい。<br>/etc/hostsには、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Your system has configured &#8216;manage_etc_hosts&#8217; as True.<br>As a result, if you wish for changes to this file to persist then you will need to either.<br>a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl<br>b.) change or remove the value of &#8216;manage_etc_hosts&#8217; in /etc/cloud/cloud.cfg or cloud-config from user-data</p>
</blockquote>



<p class="wp-block-paragraph">以上な記述があるので、/etc/cloud/templates/hosts.debian.tmpl に、次を追加</p>



<pre class="wp-block-code"><code>127.0.0.1 localhost globe3.ddns.net</code></pre>



<h2 class="wp-block-heading">落ち穂拾い: [ページキャッシュが検出されず、サーバーのレスポンスが遅くなっています]</h2>



<p class="wp-block-paragraph">サーバーの応答時間の中央値は1,688ミリ秒でした。推奨されるしきい値600ミリ秒以下の時間でなければなりません。</p>



<p class="wp-block-paragraph">PHP-FPM (FPM : FastCGI Process Manager)、php8.3-opcacheを設定して用います。</p>



<p class="wp-block-paragraph">Ubuntuでは、PHP-FPMの設定ファイルは以下の場所に配置されています。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><tbody><tr><td>ファイル</td><td>役割</td><td>置き場所</td></tr><tr><td>php-fpm.conf</td><td>メインの設定ファイル</td><td>/etc/php/8.3/fpm/php-fpm.conf</td></tr><tr><td>www.conf</td><td>デフォルトプールの設定</td><td>/etc/php/8.3/fpm/pool.d/www.conf</td></tr><tr><td>php.ini</td><td>PHP自体の設定</td><td>/etc/php/8.3/fpm/php.ini</td></tr></tbody></table></div></figure>



<pre class="wp-block-code"><code>$ dpkg -l | grep "php8.3-opcache" ← opcacheを確認</code></pre>



<pre class="wp-block-code"><code>$ sudo a2enmod proxy proxy_fcgi
$ sudo systemctl restart apache2</code></pre>



<pre class="wp-block-code"><code>/etc/php/8.3/fpm/php.ini

&#91;opcache]
zend_extension=/FULL PASS/opcache.so
opcache.enable=1
;;; opcache.enable_cli=0
opcache.enable_cli=1
;;; opcache.memory_consumption=128
opcache.memory_consumption=16
opcache.interned_strings_buffer=8
;;; opcache.max_accelerated_files=10000
opcache.max_accelerated_files=200
opcache.max_wasted_percentage=5
opcache.validate_timestamps=0
;;; opcache.revalidate_freq=2
opcache.revalidate_freq=60
opcache.optimization_level=0x7FFFBFFF
;;; opcache.file_cache=
opcache.file_cache=/var/tmp/php/opcache
;;; opcache.file_cache_only=0
opcache.file_cache_only=1
opcache.file_update_protection=2</code></pre>



<pre class="wp-block-code"><code>$ sudo systemctl restart php8.3-fpm</code></pre>



<pre class="wp-block-code"><code>/etc/apache2/conf-available/wp.conf

Alias /wp "/var/www/html/wp"
DirectoryIndex index.php index.html index.htm
&lt;Directory "/var/www/html/wp"&gt;
    Options FollowSymLinks
    AllowOverride All
    Require all granted

    &lt;FilesMatch \.php$&gt;
        SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost/"
    &lt;/FilesMatch&gt;
&lt;/Directory&gt;</code></pre>



<pre class="wp-block-code"><code>$ sudo a2enconf wp
$ sudo systemctl reload apache2</code></pre>



<p class="wp-block-paragraph">サーバーがとても非力ならば、プラグインを用いましょう。</p>



<h2 class="wp-block-heading">落ち穂拾い: パーマリンク変更後のエラー表示</h2>



<p class="wp-block-paragraph">mod_rewriteを有効化<br>$ sudo a2enmod rewrite<br>S sudo systemctl restart apache2<br><br>WordPressディレクトリに次を有効化<br> Options FollowSymLinks<br> AllowOverride All</p>



<p class="wp-block-paragraph"><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://globe3.ddns.net/wp/wordpress-ubuntu-24-04-2-lts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>空冷ファンが回り続ける、タッチパッドが使えない、Ubuntuならば、</title>
		<link>https://globe3.ddns.net/wp/unusable-touchpad-fan-ubuntu/</link>
					<comments>https://globe3.ddns.net/wp/unusable-touchpad-fan-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[minmin]]></dc:creator>
		<pubDate>Wed, 19 Mar 2025 07:01:22 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://globe3.ddns.net/wp/?p=46</guid>

					<description><![CDATA[富士通FMVA53SRに、Ubuntu 24.04.2 LTS を入れる。気になる事が２つ。空冷ファンが回り続ける。タッチパッドが使えない。 /etc/rc.local を編集し、実行ファイルにする。echo disab [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">富士通FMVA53SRに、Ubuntu 24.04.2 LTS を入れる。気になる事が２つ。<br>空冷ファンが回り続ける。<br>タッチパッドが使えない。</p>



<h2 class="wp-block-heading">/etc/rc.local を編集し、実行ファイルにする。echo disable &gt; /sys/firmware/acpi/interrupts/gpe??</h2>



<p class="wp-block-paragraph">ファンが回り続けるのはなぜ？何がCPUに負荷をかけているのだろう？<br>何をしているのか top コマンドで見ると、</p>



<pre class="wp-block-code"><code>PID USER ---省略--- %CPU ---省略--- COMMAND
5   root            62              kworker/0:0+kacpid</code></pre>



<p class="wp-block-paragraph">この[kworker]をキーワードにし、対処法を探します。<br><a rel="noopener" target="_blank" href="https://askubuntu.com/">https://askubuntu.com/</a> には、色々なヒントがあります。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://askubuntu.com/questions/972920/ubuntu-16-04-a-lot-of-kworker-processes">Ubuntu 16.04 a lot of kworker processes</a><br>ここには、「多くのkworkerプロセス（約109-115）があり、すべてのkworkerがCPUを消費します」とあるので、次のコマンドで、enabledであり、ACPI割り込み負荷が高いものを探します。こちらのシステムでは、gpe13でした。</p>



<pre class="wp-block-code"><code>$ grep . -r /sys/firmware/acpi/interrupts/</code></pre>



<p class="wp-block-paragraph">次のコマンドで、gpe13を無効にします。</p>



<pre class="wp-block-code"><code># echo disable &gt; /sys/firmware/acpi/interrupts/gpe13</code></pre>



<p class="wp-block-paragraph">ファンが止まり、top コマンドから、”kworker/0:1+kacpid”が無くなりました。<br>sudo では”許可が無い”と表示されたので、 root権限で”echo disable”以下を行いました。</p>



<p class="wp-block-paragraph">/etc/rc.local に以下を記述し、実行ファイルとしました。<br>後に reboot を行い、top コマンドで負荷がかかっていない事を確認します。</p>



<pre class="wp-block-code"><code>#!/bin/bash
echo disable > /sys/firmware/acpi/interrupts/gpe13
exit 0</code></pre>



<p class="wp-block-paragraph">若しくは、次のシェルパスです。</p>



<pre class="wp-block-code"><code>!/bin/sh</code></pre>



<h2 class="wp-block-heading">/etc/default/grub に追記する。GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash i8042.notimeout i8042.nomux”</h2>



<p class="wp-block-paragraph">タッチパッドの不具合については、<br><a rel="noopener" target="_blank" href="https://askubuntu.com/questions/533903/fujitsu-lifebook-ah544-touch-pad-not-working-in-ubuntu-14-04">Fujitsu Lifebook AH544 Touch Pad Not Working In Ubuntu 14.04</a><br>こちらを元に、/etc/default/grub にある、以下の記述を</p>



<pre class="wp-block-code"><code>GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”</code></pre>



<p class="wp-block-paragraph">次の様に、変更します。</p>



<pre class="wp-block-code"><code>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.notimeout i8042.nomux"</code></pre>



<p class="wp-block-paragraph">grubを更新して、再起動させます。</p>



<pre class="wp-block-code"><code>$ sudo update-grub
$ sudo reboot</code></pre>



<p class="wp-block-paragraph">Reeboot the system, Cheers!<br>上手く行きますようにと、再起動。乾~杯！</p>



<h2 class="wp-block-heading">ノートPCを閉じてもサスペンドさせない</h2>



<pre class="wp-block-code"><code>/etc/systemd/logind.conf
HandleLidSwitch=ignore</code></pre>



<p class="wp-block-paragraph">再起動で反映されました。</p>



<h2 class="wp-block-heading">ノートPCを放置してもスリープさせない</h2>



<pre class="wp-block-code"><code>/usr/share/gdm/dconf/90-debian-settings
# Automatic suspend
# =================
&#91;org/gnome/settings-daemon/plugins/power]
sleep-inactive-ac-timeout=0
sleep-inactive-battery-timeout=0</code></pre>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">外に置いたままのノートPCは、ジャンクノートPC</h2>



<p class="wp-block-paragraph">10年間使っていたノートPCが、空冷ファンとGPUが故障したので、買い替えようと家電量販店へ行き、今どきの機種とその値段を知る。<br>何を買うかと考えていると、棚の片隅に積まれたノートPCが、目に留まる。<br><br>「望遠鏡と一緒に外に置きっぱなし、夜露に濡れ、零下の寒空に置くノートPCは、なにも、新品はいらないな」と、パーツ取り用のジャンクノートPCを、家呑み二回分くらいな値段で購入する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="500" height="375" src="https://globe3.ddns.net/wp/wp-content/uploads/2025/03/bottom_of_screw.jpg" alt="" class="wp-image-70" srcset="https://globe3.ddns.net/wp/wp-content/uploads/2025/03/bottom_of_screw.jpg 500w, https://globe3.ddns.net/wp/wp-content/uploads/2025/03/bottom_of_screw-300x225.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></figure>



<p class="wp-block-paragraph">購入したノートPCは、金具のネジ受けが破損し、ネジが固定できません。液晶パネルを片側で支えてました。破損したナット状のネジ受けを取り去り、ドリルで液晶パネルカバーに穴を開け、ネジとナット、ワッシャで三ヶ所を固定しました。<br>今では、補強の黄色ガムテープで、工事コーンの様なありさまに。。。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://globe3.ddns.net/wp/unusable-touchpad-fan-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
