ラベル JpGraph の投稿を表示しています。 すべての投稿を表示
ラベル JpGraph の投稿を表示しています。 すべての投稿を表示

2020年7月6日月曜日

JPgraph 問題解決!

ソフトの更新を行って誤って、phpが7.3にupgradeされたためのトラブルでした。(JPgraph4.2/4.3ではphp7.2までしかサポートされていない!) で、同じことで悩んでいた方のページを見つけgd_image.inc.phpにパッチを当てることにより、無事問題解決!
JPgraphとerror no.で検索すると、対策が出てきませんが、php73, JPgraphで検索すると上のページが出てきます。 偶々、JPgraphのHP見ていて、対応がphp72までだったので、皆さんどうしているのかな?と思って検索したらたどり着きました。 良かった!

ついでにphp73 -> php74にしてみましたが、問題なく表示されました。




2020年7月5日日曜日

突然 JPgraphがストを起こしちゃった!

何故か、突然localのapache24が動かなくなってしまい、サーバーを再起動すると、何故か、JPgraphがうまく動いていない! メッセージにはttfフォントへのアクセスを確認!とあるけど、なにも弄ってないので、??? 
確認するも、どこもおかしなところはない??
原因が分からず、現時点で対処法も不明、、、、。 ググってもそれらしい答えも無し!


2020年3月27日金曜日

JpGraphを久しぶりに弄って 一部問題解決。

室内と庭の温度、湿度のpostgreSQL DBが動くようになったので、今まで使っていた、HPをちょっと弄って化粧をしてみました。

JpGraphを使ってグラフを描かせていましたが、何故かグラフの各点の値表示が出来な
かったり、TrueTypeのフォントが使えていなかったりしたのを、一日がかりで修正。
  • 値の表示が出来なかった原因 ;  $graph->clearTheme()を設定していないと、表示をしてくれなかった。下のphpのソースコード参照
  • TrueTypeフォントのインストール ;  FreeBSDで動いているので、packageからwebfont(MSのTTF同等?)をインストール。 /usr/local/lib/php/jpgraph/jpg-config.inc.phpのTTF, MBTTFを実際にインストールされているディレクトリに指定する。
//
// UNIX:
//   CACHE_DIR /tmp/jpgraph_cache/
//   TTF_DIR   /usr/share/fonts/truetype/
//   MBTTF_DIR /usr/share/fonts/truetype/
//
// WINDOWS:
//   CACHE_DIR $SERVER_TEMP/jpgraph_cache/
//   TTF_DIR   $SERVER_SYSTEMROOT/fonts/
//   MBTTF_DIR $SERVER_SYSTEMROOT/fonts/
//
//------------------------------------------------------------------------
// define('CACHE_DIR','/tmp/jpgraph_cache/');
define('TTF_DIR','/usr/local/share/fonts/webfonts/');
define('MBTTF_DIR','/usr/local/share/fonts/webfonts/');
ついでにDBの欠落データを正しくグラフに反映させる為に、pg_fetch_rows()から、pg_fetch_result()に変更して、array()の該当する日時にデータが挿入されるように変更

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');
require_once ('jpgraph/jpgraph_stock.php');
require_once ('jpgraph/jpgraph_line.php');

  $ydata = array();
  $y1data = array();
  $ymax = array();
  $ymin = array();
  $yhumid = array();
  $ymaxhumid = array();
  $yminhumid = array();
  $ypressure = array();
  $ymaxpressure = array();
  $yminpressure = array();
  $sdata = array();

$conn = "hostaddr=192.168.?.?? dbname=XXXXX user=Who password=Are_you?";  //fake user/password
$link = pg_connect($conn);
if (!$link) {
   die ('Connection failed '.pg_last_error());
   }

  $result = pg_query("SELECT day, avg_temperature, max_temperature, min_temperature,avg_humidity, max_humidity, min_humidity, avg_pressure,max_pressure,min_pressure from dailydatacurrentmonth where location='MyRoom'" );
if (!$result){
   die('Query failed'.pg_last_error());
  }
$tempE=pg_fetch_result($result, pg_num_rows($result)-1, 0);  // chech when day ends
for ($i = 0, $j = 0, $k = 0; $i < $tempE; $i++){
   $temp =pg_fetch_result($result, $k, 0);  //  day
   if ($i == $temp-1) {
     $x_axis[$i] = $temp;
     $ydata[$i] = pg_fetch_result($result, $k, 'avg_temperature');
     $yhumid[$i] = pg_fetch_result($result, $k, 'avg_humidity');
     $ymaxhumid[$i] = pg_fetch_result($result, $k, 'max_humidity');
     $yminhumid[$i] = pg_fetch_result($result, $k, 'min_humidity');
     $ypressure[$i] = pg_fetch_result($result, $k, 'avg_pressure');
     $ymaxpressure[$i] = pg_fetch_result($result, $k, 'max_pressure');
     $yminpressure[$i] = pg_fetch_result($result, $k, 'min_pressure');
     $sdata[$j++] = pg_fetch_result($result, $k, 'min_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'min_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'max_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'max_temperature');
     $k++;
   } else {
     $x_axis[$i] = $i+1;
     $ydata[$i] = '';
     $yhumid[$i] = '';
     $ymaxhumid[$i] = '';
     $yminhumid[$i] = '';
     $ypressure[$i] = '';
     $ymaxpressure[$i] = '';
     $yminpressure[$i] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
   } 
}

  $result = '';
  $result = pg_query("SELECT day, avg_temperature from dailydatacurrentmonth_prevyear where location='MyRoom'" );
  if (!$result){
     die('Query failed'.pg_last_error());
  }
for ($i = 0; $i < pg_num_rows($result); $i++){
    $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    $y1data[$i] = $rows['avg_temperature'];
}

$close_flag = pg_close($link);

$graph = new Graph(750, 450);
$graph->clearTheme();
$graph->SetFrame(true);
$graph->SetScale("textlin",10, 40);
$graph->SetY2Scale("lin",10, 90);
$graph->img->SetMargin(50,30,20,90);
$graph->SetShadow();

$graph->title->SetFont(FF_ARIAL,FS_BOLD,14);
$graph->title->Set("Daily Max/Min/Avg Temperature & Avg Humidity of the Month");

//$graph->yaxis->title->SetFont(FF_ARIAL.FS_ITALIC, 10);
$graph->yaxis->title->Set("Temperature");
$graph->ygrid->Show(true,false);
$graph->y2axis->title->Set("Humidity");

$graph->xaxis->title->Set("Month-Day");
//$graph->xaxis->title->SetFont(FF_ARIAL.FSBOLD, 10);
$graph->xgrid->Show(true,true);

// Specify the tick lables
$graph->xaxis->SetTickLabels($x_axis);
$graph->xaxis->SetTextLabelInterval(1);

// Create the linear plot
$lineplot = new LinePlot($ydata);
$lineplot->SetColor("blue");
$lineplot->mark->SetType(MARK_UTRIANGLE);
$lineplot->value->show();
$lineplot->value->SetFont( FF_ARIAL, FS_ITALIC, 7 );
$lineplot->value->SetColor('darkred');
$lineplot->value->SetFormat('%0.1f');

$p1 = new StockPlot($sdata);
$p1->SetWidth(9);

$line2plot = new LinePlot($y1data);
$line2plot->SetColor("red");
$line2plot->mark->SetType(MARK_UTRIANGLE);
//$line2plot->value->show();
$line2plot->value->SetColor('darkred');
$line2plot->value->SetFont( FF_ARIAL, FS_BOLD, 10 );
$line2plot->value->SetFormat('%0.1f');


$barplot = new BarPlot($yhumid);
$barplot->SetColor("black");
$barplot->value->Show();
$barplot->value->SetFont( FF_ARIAL, FS_BOLD, 10 );
$barplot->value->SetFormat('%0.1f');

// Add the plot to the graph
$graph->Add($lineplot);
$graph->Add($line2plot);
$graph->AddY2($barplot);
$graph->Add($p1);

$graph->Stroke();

?>



2020年3月16日月曜日

FreeBSD 12.1R とZFS

結局、FreeBSD11.1Stableで使用していたZFSの写真など重要部分が読めないままに、FreeBSD12.1Rを新規インストールする羽目に、、、、。 (消失したデータはCD等にあるので、コツコツと構築して、見つからなくなったものは諦めるーという泣く泣くの判断。 みんな自分が悪いので、已むをえません。)
今回はUSBスティックにインストーラーを用意して、ZFSファイルに(凝りもせず)インストール。 
インストールする前に、古いZFSファイルから設定ファイルなど、救出できるファイルは全て1TBのHDDにコピーしておいて、今まで使っていたZFSファイルに新規にFreeBSD12.1Rを入れ、後にHDDをマウントして必要な設定ファイルをコピーしていった。 
当然、初期のインストールなどは全く問題なく終了。 pkgを使ってgnome, apache24, postgreSQL, php, wildfly14等をインストールしてゆき、都度必要なセットアップファイルをコピーしてきて、動作確認。 samba24, gnome, apache24, wildfly14, postgreSQLとinstallそのものは無事終了しましたが;
全体としてココを参考にしながら
  1. gnome-terminalは LANGの設定が拙くて立ち上がらず、ココを参考に。
  2. postgreSQLも暫く使っていなかったので、コマンドを忘れてしまい苦労しましたが、ココを見ながら、csvファイルで残っていた気温、湿度のデータなどを復元させ。
  3. 気象データの取り込みのphpプログラムもバックアップデータから引っ張り出してきてインストール。(センサーデータを送ってくるESP32側を再起動しないと、定期的に送信するようにはなりませんでした。何故?)
  4. 気象データをグラフ化してWEBに表示している JpGraphに食わせるデータを作っているView(PostgreSQLの)をphpのコードを見ながら再構築中ー>道半ば。
  5. Sambaは、前の設定ファイルを取り込んで、すんなり動作。Win10のファイルサーバ状態。(以前は苦労した記憶があるので、助かった!)
ファイルサーバが構築できたので、過去の写真データ用のスペースを作り、ふと、google photoを覗いて見ると、かなりの物が残っていそうなので、全部をダウンロードして、新たなディレクトリに再構築。 あれ!全部入ってる! いつの間にか自分のPCにある写真や動画がすべてgoogle photoに入っているのには驚いた!というより少し恐ろしい! (今回はこれで救われていますが、、、)
ー>しかし、ごみのような写真(気安く携帯で撮ったような)も全て保存されているので、これの整理は将来的に何か方法を考えないと、ただ大容量のスペースに保存するだけでは拙い。

ついでにこの記事に刺激されvm-bhyveもここを参考に入れてみたが、問題なく動きそう。

あれ?再起動するとzfsのルート以外がマウントされていない? でググったらココにありました。 rc.confを書き換えた時にzfs_enable="YES"を消してしまっていたみたい。

ZFS絡みのバージョンアップの失敗は2-3度やって、その都度ファイルを失っていますので、二度と同じ間違いをしないように、もう少しzfsのsnapshotやbackup機能の利用を自動化してゆくことを検討中。

>zfstoolsを使う方法があったので、実験中。 cronで起動しても何故かうまくsnapshotが取れていませんでしたが、ココを参考にして設定してみたらうまく行きました。 必要のない所を個別に以下の様にauto-snapshot=falseを設定した後に
# zfs set com.sun:auto-snapshot=false zroot/tmp
# zfs set com.sun:auto-snapshot=false zroot/usr/ports
# zfs set com.sun:auto-snapshot=false zroot/usr/src
# zfs set com.sun:auto-snapshot=false zroot/var/crash
# zfs set com.sun:auto-snapshot=false zroot/var/tmp

zrootに対して com.sun:auto-snapshot=trueしてあげないとダメみたい。
# zfs set com.sun:auto-snapshot=true zroot

確かにsnapshotが出来ていました。
# zfs list -t snapshot
NAME                                                       USED  AVAIL  REFER  MOUNTPOINT
zroot@zfs-auto-snap_hourly-2020-03-16-18h00                   0      -   117K  -
zroot/R@zfs-auto-snap_hourly-2020-03-16-18h00                 0      -   117K  -
zroot/R/vm@zfs-auto-snap_hourly-2020-03-16-18h00              0      -   240K  -
zroot/R/vm/windows@zfs-auto-snap_hourly-2020-03-16-18h00      0      -   123K  -
zroot/ROOT/default@zfs-auto-snap_hourly-2020-03-16-18h00   938K      -  6.77G  -
zroot/usr/home@zfs-auto-snap_hourly-2020-03-16-18h00       432K      -   444G  -
zroot/var/audit@zfs-auto-snap_hourly-2020-03-16-18h00         0      -   117K  -
zroot/var/log@zfs-auto-snap_hourly-2020-03-16-18h00       95.9K      -   501K  -
zroot/var/mail@zfs-auto-snap_hourly-2020-03-16-18h00          0      -   165K  -
#


> wildfly16(wildfly14から新しい物に更新)を立ち上げてみたら、立ち上がらない! 「おいおい、何だろう?」ってなわけで、/var/log/wildfly16/logを眺めてみると、「動かしているマシンのアドレスが分からない?」って出て来ている。 「ありゃま、named立ち上げないとダメなんか」ということで、local domain用にnamed立ち上げて、解決。
長ったらしいログだなー、しかし。
namedの設定も久しぶりで、ちょっと手間取りました。 何故かCNAMEの所をちゃんと読んでくれないので、暫定的にCNAME使うのはヤメ。
Wildfly16とpostgreSQLを繋ぐのにもちょっと躓いたのでココを参考にした。 (ここで使っているwildflyは9.0.2とか11.0.0なのでその所為か、mouduleの置き場所が、/modules/直下に/org/postgresql/main/を作って、、、となっています。 cliを使ってインストールすると、/module/org/postgresql/main/{module.xml, posgtresql-42.2.11.jar}が出来ていました。 (どこかで、/module/system/layers/baseの下に置くような記事を見たような気がしましたがこれは違いますね、多分。jboss/wildflyは結構階層が深くてわかり難い)





2019年4月13日土曜日

JpGraphが動かない!

取り敢えずサーバーは動くようになりましたが、何故かphpとJpGraphの連携がうまくいっていないようで、自室の温度湿度のHPが表示されません!
色々弄っても

[Sat Apr 13 10:47:54.856404 2019] [php7:warn] [pid 33769] [client 192.168.1.17:60819] PHP Warning:  Use of undefined constant IMG_PNG - assumed 'IMG_PNG' (this will throw an Error in a future version of PHP) in /usr/local/lib/php/jpgraph-4.2.6/src/jpgraph_errhandler.inc.php on line 282, referer: http://192.168.1.3/MyRoom.html

等と出て、よくわからない! 個別のphpを動かしてみるとgdが取り込まれていない。 「うーん、php73, php73-extensionsともに入れているのになー」と頭を抱えながら、苦しい時のgoogle頼みで、いつものQiitaさんのページに行き当たり、取り敢えず大人しく、指示に従ってpkg installを繰り返してみたら、動くようになりました。

単純にphp73_gd (/usr/ports/graphics/php73_gd) のインストールがされていなかっただけのようですが、、、。

お陰で、php72からphp73へ、JpGraphは4.0.2から4.2.6へアップグレードされてしまいました。

いつも問題なく動いていて「空気化」している環境の一部が故障したりすると、とんでもなく面倒ですね。 ソフトは、特にどのようにしてインストールしたのか逐一記録を残しておかないと、それもPC以外のところへ、、、、。 これって、一番不得意なところかも。


2018年6月6日水曜日

OMG! FreeBSDのパッケージインストールでおかしい!

FreeBSD-stable 11.0を使っていた時に、必要なアプリをpkg installで入れていて、これはこれで動いていたのですが、先日zpoolのバージョンのアップデートの失敗で立ち上がらなくなり、FreeBSD-release 11.1のDVDを使ってbootパーティションを書き直して、ついでにOSをFreeBSD-release 11.1にアップデートしました。 ついでに、アプリも新しいものに置き換えようと、一部 portからコンパイルしてインストールしてしまい大失敗!
まともに動かないアプリが出たようで、動作がめちゃくちゃ遅くなりました。 
止むを得ないので、portから全てコンパイル、インストールし直そうとしたのですが、 packagesのDBとport installのDBに齟齬があるのか、ソースからのmake install でError #70が出てしまい、pkg delete XXXしてからmake installをする必要がありました。 
更に、共有ライブラリの依存関係が複雑で全てをportsからインストールしなおそうとしたら、graphics/cairoがコンパイルできなくてとん挫。 うー、やりたいことはgnome-terminalをWin10で起動しただけなので、ここで戦略変更。 pkg install gnome-terminalで取り敢えず動くようになりました。 しかし、これだけでは終わらない! apache24, postgresql96, php72, jpgraph 各単体の動作確認、連係動作の確認!と 久しぶりに丸1日、格闘することになってしまいました。
最終的にpkgでインストールしましたが、portsの方が新しい物もあるので、ソースからコンパイルして入れたいのですが、、、。
インストール(pkgでもportでも)したアプリケーションのDBを作成して、相互の依存性を整理して、これらのアプリのいずれかにアップデータがあれば、依存性に従って必要なアップデートをしてくれるような、ユーティリティが欲しいですねー。 ほんとはpkgだけでなら、でこのような管理ができるのかもしれませんが、タイミングの問題からソースからのインストールもしたいことがあるので、pkgとportsについてうまく統合されたDBが欲しい。

/usr/ports/databases/php72-pgsql
/usr/ports/graphics/php72-gd
/usr/ports/www/mod_php72

あ、sambaはちゃんと動いているみたい! よかった!

参考) Error 70の再現 firefoxをpkg installした後、port からインストールしてみたが、sqliteの所でError 70が出ている。
root@tyd3:/usr/ports/www/firefox # pkg install firefox
    :                    :                   :
smb:// issues (Gvfs/GIO option):
Network group, machine, and share browsing does not work correctly.

sftp:// (Gvfs/GIO option):
Only sftp access using public key authentication works.  To easily
setup public key authentication to "remote_host":

ssh-keygen
cat ~/.ssh/id_rsa.pub | ssh remote_host "cat >> .ssh/authorized_keys"

The SSH server on remote_host must allow pub key authentication.

root@tyd3:/usr/ports/www/firefox # make install
   :            :                  :               :
=> firefox-60.0.1.source.tar.xz doesn't seem to exist in /usr/ports/distfiles/.
root@tyd3:/usr/ports/www/firefox # make -DFORCE_PKG_REGISTER install
===>   firefox-60.0.1_3,1 depends on package: nspr>=4.19 - found
===>   firefox-60.0.1_3,1 depends on package: nss>=3.36.1 - found
===>   firefox-60.0.1_3,1 depends on package: icu>=59.1,1 - found
===>   firefox-60.0.1_3,1 depends on package: libevent>=2.1.8 - found
===>   firefox-60.0.1_3,1 depends on package: harfbuzz>=1.7.6 - found
===>   firefox-60.0.1_3,1 depends on package: graphite2>=1.3.11 - found
===>   firefox-60.0.1_3,1 depends on package: png>=1.6.34 - found
===>   firefox-60.0.1_3,1 depends on package: libvorbis>=1.3.6,3 - found
===>   firefox-60.0.1_3,1 depends on package: libvpx>=1.5.0 - found
===>   firefox-60.0.1_3,1 depends on package: sqlite3>=3.22.0 - not found
===>  Installing for sqlite3-3.23.1
===>   Registering installation for sqlite3-3.23.1 as automatic
*** Error code 70

Stop.
make[3]: stopped in /usr/ports/databases/sqlite3
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/databases/sqlite3
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/www/firefox
*** Error code 1

Stop.
make: stopped in /usr/ports/www/firefox
root@tyd3:/usr/ports/www/firefox #

2017年4月6日木曜日

PostgreSQL/PHP/JpGraph で小物つくり(続)

取り敢えず動くようになれば、化粧はtry & errorで何とでもなります。
 (PHPも慣れてくれば、それなりに動くものは作れますー見通しの良くない言語なので長くなるとバグ取りが大変)。

ということで、現在は左の様な画面が出てくるようになっています。 何故か、JpGraphのデータの値を表示する所が動いてくれません。 サンプルを動かしてみても、表示されないので、使用しているJpGraph(4.0.2) か PHP(7.1.3、ZEND v3.1.0)の問題なのでしょうが、ちょっと残念。
左下のコードで各プロット点にデータの値が表示されるはずなのですが、、、。

 :     :            :
$lineplot->value->show();
$lineplot->value->SetColor('darkred');
$lineplot->value->SetFont(FF_FONT1,FS_BOLD);
$lineplot->value->SetFormat('%0.1f');
 :      :               :
部屋の中の気温、湿度、気圧なので内容はどうでもよい話ですが、システムの枠組みがあればLPWAとセンサーの組み合わせにより、かなり広範囲の気象条件の変化などを把握することが出来ますので、農業等の分野では面白いことが出来ると思います。  


2017年4月4日火曜日

Postgres/PHP/JpGraphで小物作り

以前ESP8266を使って一定時間ごとに室内の気温、湿度、気圧を送信する小物を作りましたが、そのデータを四六時中動いているFreeBSDのサーバに送信するようにしてありました。 そして、サーバではデータを受け取るとPostgreSQLのDBにため込むようにしていました。 
実際にはESPのSleepの仕様(?)の関係から一時間おきくらい(不正確)のデータアップロードになっていますで、計測時間はサーバがデータを受け取った時にしています。
このデータをWEBブラウザでグラフで見れるようにと、久しぶりにPHPでプログラムを組んでみました。 昔一度使ったことがあって、デバッグが面倒で好きになれませんでしたが、今回も自分のケアレスミスでまる一日悩まされることになりました。 グラフの描画プログラムの中にデバッグ用のprint文を埋め込むと”データが壊れているよ”ってエラーが出るんですよね、当たり前の話ですが、、。 このデバッグ用のスタブが見つけられずに苦しんでいましたが、今朝やっと見つけて何とか動くようになりました。 

取り敢えず、未完成ですが、備忘録のつもり。 デバッグスタブと$マークで苦しみました。
まだ、スッピンのブスなので、色々メイクして綺麗にしてあげないと、、、、。 慣れちゃえばそんなにムズイ事は無いのですが、使わないと直ぐに忘れちゃいますからね~。

取り敢えず、シャックのモニターで色々な所の温度とか、土壌水分とか見ながら必要な仕事をモニター画面からボタン一つで指示する、というズボラ・システムの基礎実験の初めの始め。

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

  $ydata = array();
  $ymax = array();
  $ymin = array();
  $yhumid = array();
  $ymaxhumid = array();
  $yminhumid = array();
  $ypressure = array();
  $ymaxpressure = array();
  $yminpressure = array();
 
$conn = "hostaddr=192.168.1.3 dbname=data_logger user=ken password=love4u";
$link = pg_connect($conn);
if (!$link) {
   die ('Connection failed '.pg_last_error());
   }

  $result = pg_query('SELECT yyyymmdd, avg_temp, max_temp, min_temp,avg_humid, max_humid, min_humid, avg_pressure,max_pressure,min_pressure from dailydata1month' );
if (!$result){
   die('Query failed'.pg_last_error());
  }

for ($i = 0; $i < pg_num_rows($result); $i++){
    $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    $x_axis[$i] = $rows['yyyymmdd'];
    $ydata[$i] = $rows['avg_temp'];
    $ymax[$i] = $rows['max_temp'];
    $ymin[$i] = $rows['min_temp'];
    $yhumid[$i] = $rows['avg_humid'];
    $ymaxhumid[$i] = $rows['max_humid'];
    $yminhumid[$i] = $rows['min_humid'];
    $ypressure[$i] = $rows['avg_pressure'];
    $ymaxpressure[$i] = $rows['max_pressure'];
    $yminpressure[$i] = $rows['min_pressure'];
}

$close_flag = pg_close($link);


$graph = new Graph(750, 350,"auto");
$graph->SetFrame(true);
$graph->SetScale("textlin",0, 40);
$graph->SetY2Scale("lin",0, 1500);

$lineplot = new LinePlot($ydata);
$lineplot->SetColor("blue");
$lineplot1 = new LinePlot($ymax);
$lineplot1->SetColor("red");
$lineplot2 = new LinePlot($ymin);
$lineplot2->SetColor("orange");

$graph->Add($lineplot);
$graph->Add($lineplot1);
$graph->Add($lineplot2);

$graph1 = new Graph(750, 350,"auto");
$graph1->SetFrame(true);
$graph1->SetScale("textlin",0, 100);

$lineploth = new LinePlot($yhumid);
$lineploth->SetColor("blue");
$lineploth1 = new LinePlot($ymaxhumid);
$lineploth1->SetColor("red");
$lineploth2 = new LinePlot($yminhumid);
$lineploth2->SetColor("orange");

$graph1->Add($lineploth);
$graph1->Add($lineploth1);
$graph1->Add($lineploth2);

$lineplotp = new LinePlot($ypressure);
$lineplotp->SetColor("blue");
$lineplotp1 = new LinePlot($ymaxpressure);
$lineplotp1->SetColor("red");
$lineplotp2 = new LinePlot($yminpressure);
$lineplotp2->SetColor("orange");

$graph->Add($lineplotp);
$graph->Add($lineplotp1);
$graph->Add($lineplotp2);

//$graph->Stroke();
$graph1->Stroke();

?>
 

WSJT-x Super F/H

 WSJT-x使い始めてから随分経ちます(JT65しかなかった頃から)が、FT8のF/Hの使いがっ手の悪さ、MSHVの方が利用されている実態、F/HでFoxがマルチで返答すると信号が弱くなる、などからSuperF/Hが実装されましたね。  そこまでは、問題なく理解していたのですが...