質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Node.js

    1796questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Raspberry Pi

    760questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

node-redで論理演算(andやor)ができない

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 183

tsuno_ai

score 30

node-redに論理演算(andやor)のノードはあるんでしょうか?

raspberry piでnode-redを使用してGPIOの情報を処理しています。
下記のような処理をnode-redで行いたいのですが、わからず困っています。

3つのタクトスイッチが同時にON(TRUE)になった時、TRUEや任意の文字列を出力したいです。
またそれ以外状態では、FALSEまたは任意の文字列を出力したいです。

そのようなAND処理が可能ノードはあるんでしょうか?(公式のライブラリを見ていたのですがわかりませんでした。。。)
またAND処理ができるようなフロー?の書き方があるんでしょうか?

ご教授のほど、お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

質問内容からFunctionノードで自前のコードを書くのは難しいと判断し、
標準のノードでANDとORを作ってみました。
これなら自分で改造して使えるんじゃないでしょうか?

[{"id":"3531db9b.7403f4","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"11","intype":"tri","debounce":"25","read":false,"x":210,"y":500,"wires":[["5dc9093c.baacf8"]]},{"id":"c447c9c1.1b7c38","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"13","intype":"tri","debounce":"25","read":false,"x":210,"y":540,"wires":[["a6ee7aa5.8b9fa8"]]},{"id":"b37e74c0.672b08","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"15","intype":"tri","debounce":"25","read":false,"x":210,"y":580,"wires":[["88dfc93e.887588"]]},{"id":"5dc9093c.baacf8","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin11","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":500,"wires":[["2a7b9b91.6fed94"]]},{"id":"a6ee7aa5.8b9fa8","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin13","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":540,"wires":[["2a7b9b91.6fed94"]]},{"id":"88dfc93e.887588","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin15","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":580,"wires":[["2a7b9b91.6fed94"]]},{"id":"2a7b9b91.6fed94","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin11","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":540,"wires":[["e8946fda.08adf"]]},{"id":"e8946fda.08adf","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin13","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":710,"y":540,"wires":[["347a3b02.980404"]]},{"id":"347a3b02.980404","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin15","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":540,"wires":[["43c61223.58569c"]]},{"id":"b9924ae9.d74818","type":"comment","z":"5262cfb.5d6fa3","name":"AND","info":"","x":210,"y":460,"wires":[]},{"id":"f318dbe3.139a58","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"11","intype":"tri","debounce":"25","read":false,"x":210,"y":680,"wires":[["af4bb6ca.d77d08"]]},{"id":"50901400.49179c","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"13","intype":"tri","debounce":"25","read":false,"x":210,"y":720,"wires":[["9834b179.330f4"]]},{"id":"5b329548.4586fc","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"15","intype":"tri","debounce":"25","read":false,"x":210,"y":760,"wires":[["2d965d7d.700482"]]},{"id":"af4bb6ca.d77d08","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin11","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":680,"wires":[["9db2ce13.d0937"]]},{"id":"9834b179.330f4","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin13","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":720,"wires":[["9db2ce13.d0937"]]},{"id":"2d965d7d.700482","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin15","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":760,"wires":[["9db2ce13.d0937"]]},{"id":"9db2ce13.d0937","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin11","propertyType":"flow","rules":[{"t":"neq","v":"1","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":590,"y":720,"wires":[["9789539.80f5ab"],["27c40f6c.aa81"]]},{"id":"9789539.80f5ab","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin13","propertyType":"flow","rules":[{"t":"neq","v":"1","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":710,"y":700,"wires":[["d311f1b8.47f1"],["27c40f6c.aa81"]]},{"id":"d311f1b8.47f1","type":"switch","z":"5262cfb.5d6fa3","name":"pin11","property":"pin15","propertyType":"flow","rules":[{"t":"neq","v":"1","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":830,"y":680,"wires":[[],["27c40f6c.aa81"]]},{"id":"59b717fc.952ea8","type":"comment","z":"5262cfb.5d6fa3","name":"OR","info":"","x":210,"y":640,"wires":[]},{"id":"43c61223.58569c","type":"debug","z":"5262cfb.5d6fa3","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":990,"y":540,"wires":[]},{"id":"27c40f6c.aa81","type":"debug","z":"5262cfb.5d6fa3","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":990,"y":720,"wires":[]}]


それか前の方の回答でもおっしゃってるように論理演算ノードをインストールするかです。

・追記
物理スイッチを直接GPIOにぶら下げている場合、下記のようなチャタリング対策も必要でしょう。

[{"id":"c6143e7b.a2e7e","type":"trigger","z":"5262cfb.5d6fa3","op1":"","op2":"","op1type":"pay","op2type":"nul","duration":"500","extend":false,"units":"ms","reset":"","bytopic":"all","name":"Interval 500ms","x":620,"y":440,"wires":[["ca656ec5.43d09"]]},{"id":"6a9bdb3b.c50624","type":"rpi-gpio in","z":"5262cfb.5d6fa3","name":"","pin":"11","intype":"tri","debounce":"25","read":false,"x":470,"y":440,"wires":[["c6143e7b.a2e7e"]]},{"id":"ca656ec5.43d09","type":"change","z":"5262cfb.5d6fa3","name":"","rules":[{"t":"set","p":"pin11","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":440,"wires":[[]]}]

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/15 10:32

    標準のノードでandとorができるなんて驚きです・・・
    この後、andとorを使用して、改造したいなと考えていたので
    上記フローで簡単にできそうです。

    チャタリングの件、ありがとうございます。全く考慮していませんでした。
    しっかり対策します。

    ご回答いただき、ありがとうございました!

    キャンセル

  • 2018/06/15 14:41

    お役に立てましたようで何よりです、また何かありましたらいつでもどうぞ。

    キャンセル

  • 2018/06/22 16:29

    こちらこそありがとうございました。
    ぜひまたよろしくお願いします。

    キャンセル

+1

これはあくまでも一例ですが、
flow contextとfunctionノードで実現できるかと思います。

[{"id":"201d81d7.5dcb8e","type":"inject","z":"e0589b74.475528","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":100,"wires":[["6d26f473.144844"]]},{"id":"f33a780e.c8daf8","type":"inject","z":"e0589b74.475528","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":160,"wires":[["b48c9d9e.c0d4e"]]},{"id":"126157d.e8c2d28","type":"inject","z":"e0589b74.475528","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":220,"wires":[["dbfe556b.9f24f8"]]},{"id":"435dda3a.fbcc0c","type":"inject","z":"e0589b74.475528","name":"","topic":"","payload":"","payloadType":"date","repeat":"0.5","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":280,"wires":[["dae43b6d.d14b1"]]},{"id":"dae43b6d.d14b1","type":"function","z":"e0589b74.475528","name":"","func":"if ( flow.get(\"a\") === 1 && flow.get(\"b\") && flow.get(\"c\"))\n{\n    node.send({'payload' : \"test\"});\n}","outputs":1,"noerr":0,"x":310,"y":280,"wires":[["ddee8071.fc1278"]]},{"id":"6d26f473.144844","type":"function","z":"e0589b74.475528","name":"gpio1","func":"flow.set(\"a\", 1);\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":100,"wires":[[]]},{"id":"b48c9d9e.c0d4e","type":"function","z":"e0589b74.475528","name":"gpio2","func":"flow.set(\"b\", 1);\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":160,"wires":[[]]},{"id":"dbfe556b.9f24f8","type":"function","z":"e0589b74.475528","name":"gpio3","func":"flow.set(\"c\", 1);\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":220,"wires":[[]]},{"id":"ddee8071.fc1278","type":"debug","z":"e0589b74.475528","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":280,"wires":[]},{"id":"ba2e5068.435238","type":"inject","z":"e0589b74.475528","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":150,"y":40,"wires":[["6493cc35.e3e1ec"]]},{"id":"6493cc35.e3e1ec","type":"function","z":"e0589b74.475528","name":"init","func":"flow.set('a', 0);\nflow.set('b', 0);\nflow.set('c', 0);\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":40,"wires":[[]]}]


pollingする、というあまり綺麗ではない方法なので、より詳しい方の解答を待ってもよいかも・・・。

調べてみたら論理演算のnodeもあるようですね。

https://flows.nodered.org/node/node-red-contrib-boolean-logic
https://flows.nodered.org/node/node-red-contrib-bool-gate

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/15 10:21 編集

    添付いただいたノードでできました。ありがとうございます。

    また論理演算ノードもやはりあったのですね。
    勉強不足でした。ご紹介いただいた論理演算ノードでandとorの実装ができました。

    的確なご回答いただきありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Node.js

    1796questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Raspberry Pi

    760questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。