
node-redに論理演算(andやor)のノードはあるんでしょうか?
raspberry piでnode-redを使用してGPIOの情報を処理しています。
下記のような処理をnode-redで行いたいのですが、わからず困っています。
3つのタクトスイッチが同時にON(TRUE)になった時、TRUEや任意の文字列を出力したいです。
またそれ以外状態では、FALSEまたは任意の文字列を出力したいです。
そのようなAND処理が可能ノードはあるんでしょうか?(公式のライブラリを見ていたのですがわかりませんでした。。。)
またAND処理ができるようなフロー?の書き方があるんでしょうか?
ご教授のほど、お願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
質問内容からFunctionノードで自前のコードを書くのは難しいと判断し、
標準のノードでANDとORを作ってみました。
これなら自分で改造して使えるんじゃないでしょうか?
NODERED
1[{"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/14 11:44
編集2018/06/14 11:48総合スコア456
0
これはあくまでも一例ですが、
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/14 09:32
総合スコア88
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/15 01:32
2018/06/15 05:41
退会済みユーザー
2018/06/22 07:29