2024年3月2日土曜日

Inverted-Uのエレメントのスロープの方向

エレメントが屋根の上を通って一部見えないと、アップ・ダウンの時に何か引っ掛けていないか不安なので、タワーの上下に際してエレメント全てが見渡せるように、両エレメント共に庭の南側に伸ばしています。 でも、何か少し前より聞こえにくいような気がして、、、、。

EZNECでエレメントを垂らす方向でどのような影響があるのかシミュレーションしてみました。 

結論: ま、あまり影響は無いだろうー許容範囲ーということで、安全第一にエレメントが全て視界に入っているようにすることにしました。

独り言: (x,y,z)の3D座標でエレメントを動かすのは、とてもメンドウ。 やってることは直角三角形で分割して、座標計算しているだけなので、どこかに、3Dの図上でマウス動かすと、指定した点の座標が計算されるようなソフトは何処かに転がっていませんかね? これがあれば、EZNECももっと使い勝手が良くなるのだけど、、、。

シミュレーション結果:

80m

給電点の高さが20mしかないので、打ち上げ角は55°! 達磨さん! 

また、水平パターンも、両エレメントを同じ側に傾斜させれば、ややその方向に指向性が向くが、殆ど誤差の範囲。

 

 

 

 

 

 

 

40m

流石に半波長の高さで、打ち上げ角もそれなり。 また、水平パターンは教科書通りの8の字(ま、ちょっとクビレが老婆の領域ですが)。

で、エレメントを垂らす方向についても、同じ方向に垂らせば、そちらに若干指向性が向き、また、エレメントが互いに逆に向いたときは、水平パターンが少し斜めになる(南北向いていれば、

 

ちょうど米国の方向に向くが、逆にEUがクビレに入ってしまう。) 



 

 

30m

これも40mと同じ傾向で、同じ側にスロープさせると、そちらの方向に若干指向性が向く。 また、互い違いの方向にスロープさせると、水平パターンが少し傾く。

 


2024年2月29日木曜日

P97USI/P 北朝鮮が出てる?

ここ数日、10/12/40mのFT8,JTAlertがP97USI/Pなる局でワーニングを出して、キーボード入力が取られてしまうので、「おい、ほんとに北朝鮮? まさか、、、」と思いながら聞いていましたが、 近くのDXオタクも聞いているはずなのに呼んでいないので、WSJT-xのハッシュエラー?ではと、今朝JA1SJV局と調べてみました。 

池上氏はJTDXで私はWSJT-x 2.7.0 rc3なので、WSJT-Xのハッシュエラーならば、これでわかるはずです。  

すると、JTDXではdecodeできていないようなので、やはりWSJT-Xのハッシュエラーで、P4/WE9VがP97USI/Pになっていました。  WSJT-x2.7.0rc3でも下の様に、注意深く見ていると分かりますね。 

確か1月のDXPeditionの局でも同じことがあった記憶があるので、コールサインに"/"が入っていると要注意かもしれません。 根本的な改善が望まれますが、、、。

 

>5O2TEEというのが、40mにでていて、これも全く同じようにP4/WE9Vのデコードエラー! P4/WE9Vはソフト何を使っているんだろう?って話になってきますね~

あ、正常だったりもするので、ノイズなどの状況に脆弱なコードの所為であることは確かですね。



 

2024年2月18日日曜日

最近のDXCC(Challenge)状況

 昨年末に総括をし忘れたので、昨年末の状況は分からないが、2024年2月18日の時点で

LoTwで左の様になっていた。 最近は殆どLoTwで処理できるが、偶には紙QSLだったりOQRS(をしないとLoTwもして貰えない)が必要だったり、、、。 自分のExcelの取りまとめで見ると 紙QSLで7つ、未回収6ツとなっていました。 当面160mが無いのでChallenge2500を目指していますが、少々先は長そう、、、。

Clipperton, Juan Fernandes, Guyanaと今年に入って大きなDXpeditionが行われていますが、再開したころにChallengeは目標に無かったので、1Bnad/modeしかなかったりして、大慌てで穴を埋めています。

それにしても、40/80mはあまり聞こえない! アンテナそんなに良くなかったかな~ 。 

50年も昔の事なので、SunSpotが高い頃の80mってどうだったのか全く記憶にありませんが、なんか寂しいLowBand.

LoTwの2023/4/20(Challengeが2000達成時)と今日現在を比較してみると、6mでの昨年の梅雨時からのアクティビティの貢献度が大きいのと、10/12m等のSSNの上昇の貢献が読み取れる。 また、Digitalも結構貢献しているが、CWがやはり大きいのが分かります。












2023年10月7日土曜日

30-40-80m Inverted U

そろそろシーズンも始まるので、各バンドのVSWRを測って微調整、、、。

最新のエレメント長
とはじめたら、何故か80mのFT8で動作がおかしくなり、トラップのCが壊れた。 しようが無いので、過去のブログを見ながらエレメントの長さやCの容量を再度確認してみると、EZNECのデータの過去の記録と実測値がえらい違う。 最新のエレメント長やトラップの値と各バンドのVSWRの測定結果を再掲載(備忘録替わり)。

 EZNECに実測データを入れてVSWRを表示させてみると、下の様にVSWR最小値の周波数が少し高く出ています。

EZNECのVSWR
 

 

 



下はnanoVMAでシャックから測定した実測値で、5Mhz近辺に変なディップがあることは同じですが、VSWR最小値の周波数はかなり違うところにあります。

nanoVNAでのVSWR実測値
7Mhzのトラップの同軸Cが時々放電してトラブるのですが、ここに掛かる電圧の最大値を計算する方法がよく分からないので、ここ数年試行錯誤を繰り返しています。

で、今回は、半波長ダイポールの一般的な電圧・電流分布の図を見ていて、「ひょっとして、7Mhzのエレメントの短縮率を小さくすれば(エレメントの長さを1/4波長に近づければ)、電圧最大値になるエレメント端のトラップの頭と尻との電位差は小さくなるのでは」と7Mhzのエレメントを少し(1.1m程)伸ばしてみました。トラップのCを少し小さくして、チューニングは取れていますが、どうなるのか? 暫くは様子見。(ダメだったら、もっと長くしてフルサイズに近い値にして、トラップを小さくすることを考える必要があるかも、Lは80mに影響があるので、このLで出来るだけCを刻んでゆくか、、、)

40m
30m





80m

 

2023年9月8日金曜日

Django/PythonでのWEBアプリ開発を更に勉強ーその4

 この前のところで、大枠はcanvasjsによる表示が出来そうなところまで来て、最後に残った2つの問題について、検討(検索?)

1)djangoで使用している変数の値を表示される方法

  context[xxx]=abcとしてhtml に{{xxx}}とすれば表示が出来るとあったので、

  context= { 'year' : d.year(), 'month':d.month(),.....  (d=datetime.datetime.now())

としてみたら、TypeError: 'int' object is not callable と出てくるので、

  context={'date': d.date()......}としたら、正しく表示されるようになりました。

 なんで二重中括弧でくくるの?とか、型の取り扱い(数値、文字、リスト、辞書等)が今一よく分かっていませんが、 取り敢えずは、問題の一つは解決。

2)canvasjsでの空のデータを渡されたときの対応 (未解決)

  DBからのデータが無かった場合に、当該のobjectが生成されないために、以下のようなエラーが出る。 因みにlocal variable referenced before assignmentはググると結構出てくるので、嵌りやすい問題かも(C等と違い、variableを事前に宣言しないで使えちゃうので些かキモイ言語だと思っていますが、これは典型的なエラーですね)

  :         :          :           :         :

 File "/home/Users/ken/application_environment/mysite2/wxmonitor/views.py", line 240, in dailydata
    'MR2data': MR2tempdata,
UnboundLocalError: local variable 'MR2tempdata' referenced before assignment
[08/Sep/2023 11:35:45] "GET /dailydata/ HTTP/1.1" 500 66299

で、views.pyの中で、objectが出来ていなかった場合には空のリストを生成して渡すようにした。 これで、canvasjsも当該のデータの欠落を無視して表示されるようになった。 

<これって配列を使用する前に、空の配列を作ってから使用するようにすれば、条件のif文を一つ省略できるし、Argol系の使用する前に宣言と同じことなので、此方で行くことにしました。 これデコードが大分スッキリしました。


左は、改良後の表示のの状態(下が正常な状態で、上が欠落データがある状態)


 

 後学のために改良したviews.pyの一部を下に示しておきます

 

初めから空の辞書リストを宣言しておけば、シンプルに書けるので、そういうふうに書き直しました。

 

 

 

 


 

2023年9月7日木曜日

Django/PythonでのWEBアプリ開発を更に勉強ーその3

 canvasjsのpython関連のサンプルソースで、簡単にDBの抽出データをserializers.serialize('jason', xxx.object.all())で渡していたので、ズボラにそのまま踏襲していたのが間違いでした。  

1)canvasjsのサンプルソースから、index.html(pythonに依存しない物)に直接データを埋め込んでpython manage.py runserver で実行してみると、まったく問題なく表示することが出来ました。

2) serializers.serialize('json',xxxx)でどのようなデータが作られるのか、python manage.py shellで手入力して確認してみました。(左図) うーん、これでは、無理ですよね。python manage.py shellはpython初心者にとっては、色々と試して見れるので極めて便利ですね。

if !flag:はダメでif flag=False:なんですね。 (何でもCっぽく理解しているのが悪いんですけど、、、)



3) 1)の場合の受け渡されるデータの形を確認すると、dictionary型のリスト?となっていたので、そのような形式でデータが送られるように、views.pyを改造することにしました。  夫々の、抽出データを加工して、dictionary型のリストを作り、これを渡してみましたところ、無事表示させることが出来ました。  


データの量が多いので、夫々のデータをcontextにdictionary型として入れ、htmlに送って動作することが確認できました。 (送出するデータの種類が増えても対応できるようにするため。)


   

 

ここまでは、無事に進んだのですが、対応するデータが存在しない時にエラーが発生するようなので、この対応を考えなくては、、、。  

 

 

更にhtmlでpythonで使用している変数を表示する方法が??

 


 

2023年9月5日火曜日

Django/PythonでのWEBアプリ開発を更に勉強ーその2

取り敢えず、動かして色々弄ってみるベンチが出来たいので、現在PHPで作って使用している、自宅の環境モニターの表示アプリ(定期的に何か所かの温度、湿度を自動的にサーバー


のDBにあげておき、必要に応じてDBから抽出、aggregationして時間毎、日毎、月毎のデータとしてグラフで表示させる)をDjangoに移行させてみました。  

 

1)DBのVIEWの扱い  DjangoではDB派のアクセスとしてORM(object-relational-mapping)が提供されていますが、これが今一使い難い。 例えば、夫々の地点から、温度、湿度、気圧を定期的に送っているので、データは、(場所、時間、温度、湿度、気圧)がひとまとまりのデータしてDBに存在しています。 従って、時間毎の最高、最低、平均等の所謂aggregationはDBのVIEWの様に一気に計算して欲しいのですが、ORMではこれはちょっと無理みたい。 なので、DBのVIEWでaggregationのビューを作って、これを参照するmodelを作る方法を取りました。 

class Meta: managed=FalseでDBのVIEWを参照できるみたいです。

>adminで表示されるこのテーブルの内容を弄るとどうなるのかは未確認

2)抽出したデータの表示 直近の場所毎の温度、湿度を表示するテーブルへのデータの送信は直近のデータを表示するDBのVIEW(Up2dateData.sql)を呼ぶclassでwxmonitor_testpage.htmlをtemplateに指定して、表示させてみました。 これは問題なくすんなりOK

models.py


3)aggregareデータのグラフ  取り敢えず、一日の時間毎の最高、最低、平均温度、平均湿度をDB VIEWのdailydatatoday.sqlから参照するclassをTodayData(models.Model)を作成。 これから、場所のフィルタを噛ませて、特定の場所のデータ(最高、最低、平均)を取得して、templateに送るviewを def dailydata(request)を作成

 wxmonitor_test.htmlで送られたデータをテーブルに表示することはできましたが、phpで使用しているcanvasjsで表示させようとすると、全く何も表示されずここで頓挫。

 

views.py  
 

 

 

canvasjsとdjangoの組み合わせでサンプルアプリをググって、ココやココなど見ながら、canvasjsでグラフが表示できるか確認してみますが、何故かどれもダメ。  現時点でDjangoとcanvasjsとの組み合わせをうまく動作させることが出来ずに、頭を抱えています。

因みに、index.htmlに適当なグラフのサンプルのソースをcanvasjsのページから持って来て表示させるとちゃんと表示してくれます。 例えば、JavaScript Dynamic / Live Multi Series Chart をindex.htmlにして、djangoで呼び出してやると問題なく表示されているので、ここら辺から、問題点を探し出してゆくことにしようと思います。

ちょっと長期戦の予感、、、、

 

 

30-40-80m Dipoleがオカシイ(続)

RI1FJLの40mでの交信のときおかしくて、エレメントの修正をして問題なく終わったと思っていたら、ここ2週間の雨天で、またチューンイングが取れなくなってしまった。 何故か30mがオカシイ! よくよく考えてみると、7Mhz用のトラップを軽量化の為に銅線からアルミ線に変更した 注)...