画像認識を使った基本的なハート送信プログラムです。
ランキング最下位から1位に向かってハート送信していき、1位で終了します。
フルオート・セミオートどちらでも使えて、漏れなく安定して送信します。
こちらのプログラムを作る前に、画像認識の記事をサラッとでも目を通して頂けるとスムーズにプログラムが作成できると思います。
概要と特徴
画像認識で画面の中のハートを見つけてタップします。OKとハートを送信しました!(=送信確認)はタッチ操作でタップし、再びハートを画像認識で探します。
画面の中にハートが見つからなければ、「ランキング画像認識でエラーではないこと」「1位画像認識で1位ではないこと」を確認し、3.9人スワイプで画面を上にスクロールしてハートの画像認識を繰返します。
エラーが認識された時は、エラー処理ループでエラーを解消します。
1位が認識された時は、プログラムを終了します。
ランキング画像認識
「リトライが出たら」「イベントお知らせが出たら」という【エラー】をひとつひとつ見つけるのでなく、「ランキング画面にいるならば正常に動いている」「ランキング画像認識に失敗したら何かしらのエラーにある」という考え方です。
エラー処理ループ
無限ループにならない作りになっています。
エラー処理ループを使うことにより、通信待ち時間(=いわゆるミキピョン=ミッキーの画像がピョンピョン跳ねているアレです)やリトライ等にも対応しています。
エラー処理ループを教えて下さったのは、本職プログラマーのHさんですが流石の仕様です!このおかげでプログラムが止まることが本当に少ないです。
強制ポップアップ対応[v2]
送信中に強制ポップアップ(期間限定イベントインフォメーション)が出た場合には、エラー処理ループに入り【OK】と【とじる】をタップして元の送信プログラムに戻ります。
エラー処理ループでも、OKリトライ画像認識でOKをタップしますので、OKされるものだとしてその先のとじるを画像認識でタップして復帰させるようにします。
実際の送信の様子
送信時間は、ランキング人数101人-自分=100人で7分44秒でした。
これは端末の性能と通信環境(エラーの回数)により変わります。
※音量にご注意ください
プログラム実行中にFRepパネルが変化しているのを見てください。6位と2位の辺りで一瞬だけ「エラー」の文字が確認できます。これは[プログラム4.ハート画像認識]と[プログラム14.エラー待機]でスキップ表示ありに設定しているからです。この表示があるとエラーの有無がわかりやすいです。
尚、FRepパネルは画像認識の邪魔にならない位置に置いてください。FRepパネルがある為に画像認識が失敗する場合もあります。
又、オプション-記録/再生設定で【再生プロセスの通知】をONにしている場合もポップアップの位置には充分注意してください。デフォルトでは【とじる】画像認識と位置が被る為に、失敗したり処理が遅くなる事があります。出来れば【再生プロセスの通知】はOFFをお勧めします。
FRepのプログラム
プログラムの説明
1.[待機]0.5秒–直前のプログラムからの予備待機です。
2.[ハート送信ループ]15回–通常は4回で良いのですが、3.9人スワイプで5回になる場合、ミキピョンやエラーでも4回以上になる可能性もあるので念の為15回に設定しました。
3.[待機]0.5秒–送信確認からの待機を含めて、若干の待機が必要です。
4.[ハート画像認識]←詳細はこちらを確認
判定時間に0.5秒入れました。こちらは3.待機と合わせて調整可能です。
[スキップ/延長用パネルを表示]にチェックを入れることによって、プログラム実行時にFRepパネルに表示が出ます。
5.[OKタップ]–間隔0.6~1.0秒(待機後タップ)
OKの[K]辺りの位置をタッチ操作でタップします。
ハートをタップしてからOKまでは通信しないので、この時間は端末の性能だけによります。あまり変動しないので間隔は詰められるだけ詰めても大丈夫です。
但し、OKがタップ出来る前にプログラムがタップしてしまうと、エラー処理ループに回ります。そうなると却って遅くなるので、FRepパネルの「エラー」表示をよく確認してエラーにならない範囲内で時間を短くしてください。テスト端末(P10lite)では何度かエラーもあったので0.6秒が限界でした。
[20190809]修正 OKタップ位置を念の為、[K]辺りの位置に変更しました。
詳細はこちら→OKリトライの画像認識とタップを修正
6.[ミッションタップ]–間隔1.0秒~1.3秒(待機後タップ)
ハートを送信しました!(=送信確認)は、どこをタップしてもポップアップが消えること、そしてランキング画像認識とエラー処理ループがあればタップに失敗しても問題ないことから、画像認識ではなく[ミッションタップ]にしました。これにより少しは送信時間が短縮できると思います。
OKをタップしてから送信確認Popupまでは「通信」します。したがってミキピョンが出る可能性もあります。端末の性能プラス通信環境により必要時間が変わり変動もあるので、若干長めに設定した方が結果的に送信時間は掛からないかもしれません。エラー処理ループに回らない範囲で間隔を設定してください。
7.[ハート送信ループ終了]
8.[ランキング画像認識]←詳細はこちらを確認
ランキング画面であることを確認する為の画像認識です。もしランキング画面にいなかったらエラー処理ループにいきます。ここでは「スクリーンショットを撮る」にしましたが、チェックを外しても大丈夫です。
9.[1位画像認識]←詳細はこちらを確認
1位だったらプログラムを完了します。「スクリーンショットを撮る」のチェックを外して省略していますので、8.ランキング画像認識に使用したスクリーンショットを使って判定します。
本来ならば、このプログラムで直接「完了」にすれば良いのですが、何故かプログラム途中の完了は完了にならずに次のスワイプにいってしまう事がある為、「完了」はなるべくプログラム最後に入れています。
10.[3.9人分スワイプ]–1位に向かってスクロールするスワイプです。3.9人にする理由はこちらをご覧ください。タッチ操作のスワイプでも可能です。テストプログラムは操作の記録(Rec)で作ったものです。ぴったり4人にしなくても良いので0.2秒スワイプも作成可能です。
11.[待機]0.2秒–ランキングが1位まで来た時に、それ以上スワイプ出来ない場合はスワイプ戻りがあります。その時間を待機(ビョーン待ち)しないと、うまくハートの画像認識が出来ません。待機後はプログラム2へいきます
12.[エラー処理ループ]15回–12~18がエラー処理ループです。
13.[ミッションタップ]–間隔0.5秒(待機後タップ)とりあえずミッションタップで何とかなるものも多いです。
14.[エラー待機]0.5秒–ミッションタップと次の画像認識前に待機がないとうまく動かなかった為に入れました。
[待機スキップ/延長用パネルを表示]にチェックを入れることによって、プログラム実行時にFRepパネルに表示が出ます。ラベル名に「エラー」と入れたので、FRepパネルもわかりやすいです。
15.[OKリトライ画像認識]←詳細はこちらを確認
[20190809]修正
OKリトライ画像認識の判定を80%→93%に変更しました。
まずここで「スクリーンショットを撮る」にしました。この後2つの画像認識には「スクリーンショットを撮る」のチェックを外し、この画像を使いまわします。
16.[各種とじる画像認識]←詳細はこちらを確認
これを入れることによって強制ポップアップ対応になります。
17.[ランキング画像認識]←詳細はこちらを確認
ランキング画面になればプログラム2に戻ります。画像認識はプログラム8と同じです。
18.[エラー処理ループ]終了–ループ猶予15回の間に復帰できる予定ですが、ミキピョンが長く出る様な端末/通信環境の場合はループ回数を増やしてください。
19.[スクリーンショット]←詳細はこちらを確認
もし15回でエラーから復帰できなければその時のスクリーンショットを撮ります。
20.[中断]–例えば、メイン端末で二重ログインしたことによってログイン画面に戻ってしまった時、ツムツムアプリ落ちでホーム画面に戻ってしまった時などに中断になる可能性があります。スクリーンショットで何故中断したのかを確認しておきましょう。
尚、このプログラムを関数で使用した場合は、[中断]と[完了]でプログラムの分岐先を変えることが出来ます。このプログラム単体で使用している場合は[中断][完了]どちらも同じです。
プログラムによっては中断後に再び復活して送信を続ける方法もあります。
21.[完了]
[中断][完了]の作成には、待機を0秒にして「完了した時」の分岐先を[中断][完了]にします。
まとめと修正情報
以上で基本的なハート送信プログラムが完成しました。
[20190225]修正
ランキング画像認識の判定を80%→90%に変更しました。
[20190809]修正
1.OKリトライ画像認識の判定を80%→93%に変更しました。
2.OKタップ位置を念の為、[K]辺りの位置に変更しました。
次のおすすめはこちらです。
コメント
イベント開始の強制ポップアップのスクショを撮りたいのですがイベント開始直後に使用中の端末で1度しか出ないので難しいです。送信機側でスクショを撮らないと、他の端末で撮っても座標位置がずれるので、画像認識には向かないですよね?
そういう場合は、一時的に送信機の自動送信を止めて手動にて11時に出るならそのタイミングでスクショを撮るしかないのでしょうか?
かのんさんのフレッププログラムをまるごとコピーして使用させていただいてますが、エラーのループでスクショを撮り諦めてその回の送信はストップする仕組みになっているのでしょうか?
かのんさんのハート送信プログラムで私が理解するには、イベントの強制ポップアップが出るとOKをタップしてイベントページに進みフレップはエラーループでも復帰出来ずスクショ撮って諦めてその回の送信が止まるものだと思っています。
そうなると、エラースクショは撮っていても、イベントページのスクショになりますよね?
手動しか方法がないのなら仕方ないのですが、これからもイベントは毎月あります…
何かいい方法がありましたらご教授お願いします。
面倒な質問で申し訳ありませんm(__)m
コメントありがとうございます(^^)
まず、基本ハート送信プログラムでイベント強制ポップアップが出た場合ですが、OKをタップ→とじる画像認識でタップして送信に復帰します。
そのまま送信を続けますので、確かにスクショは撮れませんが、エラーで止まる事はありません。
スクショが欲しい場合ですが、起動プログラムでしたら撮る事が出来ます。イベント開始の11時に送信と送信の合間でしたら、次のプログラム実行時にスクショが撮れているかと思います。
起動v5.1プログラムでしたらスクショを撮った後にそのまま送信出来るかと思います。起動v5.1ezプログラムはスクショを撮ったその回はエラーとなり送信は出来ません。
追記
上記の様にイベント強制ポップアップのスクショは必須ではありませんが、どうしても欲しいけれども起動のタイミングが合わない場合は、下記の方法も可能です。
アンインストール→インストール または ストレージデータの消去 の後に手動でツムツムを起動
以上よろしくお願い致します。
Twitterでリプした者です。
仕事中の長時間自動化をしているのですが、帰宅するとスマホの電源が何故か落ちていてFrepを開くと「strservからの応答がありません」と表示されてもう一度winの設定ツールを実行しなければならなくなります。ツムツムのメールボックスを見てみると5時間程は稼働していたようです。
「長時間自動化」とは親型をされているのでしょうか?
長時間の常時稼働は端末に大きな負荷がありますので、バッテリーの劣化具合によっては充電しながらでも電源が落ちる可能性があります。またXperiaZ4等、劣化が無くても常時稼働に不向きな端末もあります。
稼働し始めてから1~2時間後に充電の状態を確認してみて下さい。どんどん減っていくならば常時稼働には不向きな端末かと思われます。
親型ではなくランキング固定型のフルオートでしたら、マクロドロイドを利用した再起動型に変えてみることをお勧めします。端末を30分以上休ませてあげる事でうまく動く可能性があります。
後者の方です。
お手数ですがマクロドロイドのやり方を教えて頂けませんか?
こちらをどうぞ
【MacroDroid】マクロの作成と使い方
https://autofrep.net/macrodroid/
初めまして。失礼します。
Ryoと申します。
frep初心者ですが、ブログ記事を読ませていただき、フルオート完成に向けて作業を進めている次第です。
1点お尋ねします。
当記事に記載されている手順に沿ってプログラムを組んでみたのですが、ハートを4人に送信した後、本来であれば、次の4人に送信するためにスワイプ作業に移るかと思うのですが、スワイプ作業に移行せずに14のエラー待機に移行してしまいます。スワイプ作業に関しては、操作の記録での作成・タップでの作成(タップ→スワイプに変更はしています)を試してみましたが、上手くいきません。前記事のセミオートのハート送信時にはしっかりと4人分スクロールしてくれているのですが、かのんさんの方で考えられる原因等ありますでしょうか?
ご教授いただけますと幸いです。
よろしくお願いします。
プログラムの中でエラー処理ループへ分岐するのは、[8.ランキング画像認識]だけです。
という事は、[8.ランキング画像認識]が失敗している可能性が大きいと思います。
そうでなければプログラムの分岐先が間違っている事になります。
まずは[8.ランキング画像認識]がきちんと動作しているかを確認してみて下さい。
プログラム作成頑張ってくださいね!
返信いただき、ありがとうございます。
正直、まさか返信をいただけるとは思っていませんでした(涙)
本当にありがとうございます。
なるほどですね、まずは[8.ランキング画像認識]を確認したいと思います。
進捗があり次第、再度、コメントさせていただきます。
ありがとうございました!
たびたび失礼します。
ご教授いただいたとおりに[8.ランキング画像認識]を確かめてみましたがうまくいきませんでした。
テストでもしっかりと認識しているようでしたが、やはり上手くいかず、再度、ランキング画像認識の範囲を設定し直して、テストでもしっかりと認識しました。その後にツムツム内で一連の流れを再生してみましたが、今度はハートを4人分送信後、エラー処理にすら進まず、再生が完了してしまいました。
分岐に関しては、完了後は「次へ」、失敗(時間切れ)後は「12.エラー処理ループ開始」に指定しています。
何か他に考えられる原因等、ございますでしょうか?
よろしくお願いします。
再度、失礼します。
恥ずかしながら、設定ミスが発覚しました。
ミス修正後、スワイプすることができました。
お手間を取らせてしまい、大変申し訳ありませんでした。
ミスを発見できて良かったですね!
初めて間もない方はミスを見つけるのも難しいと思います。
1つずつ確認していくしかないと思いますので頑張ってください!
はじめまして!
最後の20番目と21番目のやり方がわからないのですがどのように行うのでしょうか?
ほかの記事にやり方の記載などありましたらすみません。
よろしくお願いします
[中断][完了]の作成には、待機を0秒にして「完了した時」の分岐先を[中断][完了]にします。
本文にも追記しておきましたのでよろしくお願いします。
こんにちは、frepの設定方法を色々調べててこちらの記事にたどり着きました。
非常にわかりやすく書かれておりとても助かります。
一つ試してみたいことがあり質問させていただきました。
frepでの待機時間を、指定した秒数の範囲内でランダムに・・・という設定ってどうやったら実現出来ますでしょうか・・・?
色々設定し、関数にして呼び出して~とやってみましたがどうにもうまくいかずで・・・
1~5秒の範囲でランダムに待機するプログラムを作り、それを関数化して適宜呼び出しをしたいと思っています
お手数おかけしますが教えていただけると助かります・・・
FRepには「ランダム」という機能は無いので、ランダムっぽく見せかけるという事になると思います。
私が作るなら、Switch文と変数を使い「aならば○秒」というプログラムを作ります。
Switch:a1ならばプログラム1に分岐
Switch:a2ならばプログラム2に分岐
Switch:a3ならばプログラム3に分岐
プログラム1は待機5秒
プログラム2は待機1秒
プログラム3は待機3秒
という具合です。ランダムを演出する為に秒数は順不同にします。関数を使う必要はありません。
「aならば」の部分は2つの方法を書いておきます。他にも方法はあると思います。
1つ目
リピートを使い、変数でリピート回数(@loop)を取得して「@loop=1なら」という条件文にします。
2つ目
時間変数を使い、下一桁を取得してその数値を「a」にする。この方がよりランダムぽいです。
待機秒数以外に変更が無ければ、プログラムを(秒数ごとに分けず)1つにして秒数を変数で設定するという事もできます。
Switch:a1ならば変数secに5をセット→プログラム1に分岐
Switch:a2ならば変数secに1をセット→プログラム1に分岐
Switch:a3ならば変数secに3をセット→プログラム1に分岐
プログラム1はsec秒を待機して実行、という具合です。
いずれにしてもSwitch文と変数を理解して取り組んでください。
いつも素晴らしい記事を提供していただき本当にありがとうございます。
Frep と Macrodroid を組み合わせて周回する方法や、ツムツムでの、ハート画像認識について大変参考にさせていただきました。
お忙しいところ申し訳ないのですが、一つお伺いする事はできますか?
以前のコメントの中で、「Switch文と変数」についてかのん様がコメントされているのを拝見させていただきました。
以下はそのコメントの抜粋です。
2020-12-24 23:19
Switch:a1ならばプログラム1に分岐
Switch:a2ならばプログラム2に分岐
Switch:a3ならばプログラム3に分岐
プログラム1は待機5秒
プログラム2は待機1秒
プログラム3は待機3秒
この方法の中で変数について述べておられますが、Switch を組みあわせてどのように設定するかを
もう少し詳しく教えていただくことはできますでしょうか?
上の文からどのような構造になるのかは大まかに把握できましたが、
変数というものを使ったことがないので変数を具体的にどのように設定するかが分かりませんでした。
よろしくお願いします。
Switchについては、FRepのアップデート【FRep4.9/4.94】をご覧下さい。
https://autofrep.net/update-frep49/
変数については、FRepの使い方【変数】と【IF】 をご覧下さい。
https://autofrep.net/variable-if/
両方ご覧になった上で不明点があれば、上記のコメント欄より再度ご質問よろしくお願い致します。
かのんさま
返事が遅れまして申し訳ありません。
了解しました。確認させていただいて再度コメントさせていただきます。
ありがとうございます。
度々コメントさせていただいてるものです
プログラム完成したのですがハートを取り残ししてからスワイプしてしまいます
♥️画像認識は4回➕1回(スワイプズレた時用)
でやっています。
取り残しを検知することはできませんか?
分かりずらくすみませんよろしくお願いします
あと別の質問なんですが、Frepパネルが表示されずエラー時分かりずらいです設定の問題でしょうか
>Frepパネルが表示されずエラー時分かりずらいです
FRepパネルでプログラムの流れを掴むには、それぞれの項目で「パネルを表示」をONにする必要があります。
例えば
プログラム〇番の待機で「パネルを表示」をON、
プログラム〇番の画像認識で判定時間の時に「パネルを表示」をONです。
最初にプログラム作成時にあれこれ確認したい場合は、FRepパネルではなく、再生プロセスの通知をONにする方が良いかもしれません。うまく動く様になったら、再生プロセスの通知をOFFにすればよいだけなので簡単だと思います。
【再生プロセスの通知】で全てのプログラムの流れを確認する場合は、FRep導入【初期設定】 をご覧ください。
https://autofrep.net/frep_config/
>ハートを取り残ししてからスワイプしてしまいます
という事は、ハートの画像認識がうまく出来ていないと思われます。
取り残しを検知するのではなく、そもそものハート画像認識をもう一度しっかり作り直してみて下さい。
パネルを表示というのはスキップ/延長用パネルを表示ですか?
そうです。
チェックつけてるんですけどね
「スキップ/延長用パネルを表示」のチェックの件でよろしいでしょうか?
新しいプログラムを作成し、待機10秒「スキップ/延長用パネルを表示」チェックしてみて下さい。
そこで待機カウントが10秒→0秒まで表示されるのなら、表示されないプログラムとの違いを確認してみましょう。
そこでも表示されない場合はなんらかのトラブルの可能性もあります。FRepアプリをアンインストール再インストールで直る場合もあります。
低スペ端末の為、ハート画像認識はマスク使用で、8番のミッションタップの間隔を1.5秒に伸ばすことにより自動ハート送信が成功致しました。ただ13番の3.99人スワイプで、ハート上部の右側と左側の部分が少し見切れた時は画像認識できず送信漏れになります(230人に送信中、0〜2人程度の送信漏れ)。これは割り切るしかないでしょうか?それともスワイプの微調整等で解消しますでしょうか?
ハート5つのタップ↓↓は出来そうにないでしょうか?
https://autofrep.net/image-recognition/#h5
ハート5つが無理でしたら、下記どちらかでしょうか。
■3.5人スワイプにして、ハートが被る様にする
■ズレ補正プログラムを採用する
https://autofrep.net/program-heart-highspeed/
マスクが出来る方でしたら、ズレ補正プログラムにチャレンジしてみるのが良いかもしれませんね。
早速のご対応ありがとうございます。不安が解消されました。自分の【ハート5つのタップ】プログラムを再確認してみたのですが、残念ながら結果は変わらずでした…。まずは【3.5人スワイプにして、ハートが被る様にする】で対処し、頃合いを見て【ズレ補正プログラムを採用する】にチャレンジしてみたいと思います。
3.5人スワイプでも送信漏れが起きてしまうため、超低スペ端末はやはり送信機には不向きでしたね…。現在は機種変をして快適な基本ハート送信が出来るようになりました。かのんさん相談に乗って頂きどうもありがとうございました(♡ᴗ͈ˬᴗ͈)⁾⁾⁾