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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

Q&A

1回答

2326閲覧

Mosquitto の sub.py を実行した際に出力されるretainのデータを、ブラウザで表示させたいです。

KeiTakeshima

総合スコア8

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

0グッド

0クリップ

投稿2016/01/19 08:22

編集2016/01/20 11:16

###前提・実現したいこと
[日本語が下手]
Mosquitto の sub.py を php で実行させ、その retain のデータをブラウザで表示させたいです。
###発生している問題・エラーメッセージ
おそらく、mqttc.loop_forever() で処理が終わらずphpで表示出来ていないのだと思います、

よろしくお願いします!!

###ソースコード
sub.py

python

1 2import sys 3try: 4 import paho.mqtt.client as mqtt 5except ImportError: 6 # This part is only required to run the example from within the examples 7 # directory when the module itself is not installed. 8 # If you have the module installed, just use "import paho.mqtt.client" 9 import os 10 import inspect 11 cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"../src"))) 12 if cmd_subfolder not in sys.path: 13 sys.path.insert(0, cmd_subfolder) 14 import paho.mqtt.client as mqtt 15 16def on_connect(mqttc, obj, rc): 17 print("rc: "+str(rc)) 18 19def on_message(mqttc, obj, msg): 20 print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload)) 21 22def on_publish(mqttc, obj, mid): 23 print("mid: "+str(mid)) 24 25def on_subscribe(mqttc, obj, mid, granted_qos): 26 print("Subscribed: "+str(mid)+" "+str(granted_qos)) 27 28def on_log(mqttc, obj, level, string): 29 print(string) 30 31# If you want to use a specific client id, use 32# mqttc = mqtt.Client("client-id") 33# but note that the client id must be unique on the broker. Leaving the client 34# id parameter empty will generate a random id for you. 35mqttc = mqtt.Client() 36mqttc.on_message = on_message 37mqttc.on_connect = on_connect 38mqttc.on_publish = on_publish 39mqttc.on_subscribe = on_subscribe 40# Uncomment to enable debug messages 41# mqttc.on_log = on_log 42mqttc.connect("192.168.33.20", 1883, 60) 43mqttc.subscribe("kut", 0) 44 45mqttc.loop_forever() 46

call.php

php

1<?php 2echo "test"; 3 $fullPath = 'python sub.py'; 4 passthru($fullPath,$outpara); 5 var_dump($fullPath); 6 var_dump($outpara); 7?> 8 9 10

###補足情報(言語/FW/ツール等のバージョンなど)
環境
Mac OS X El Capitan 10.11.2
ブローカサーバ : Ubuntu 14.04
サブスクサーバ : Ubuntu 14.04
vagrant apache2
mqttクライアント : paho

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

mqttc.loop_forever() で処理が終わらずphpで表示出来ていないのだと思います、

そのとおりだと思います。

以下ようにしてはいかがでしょう?

  • sub.py の on_message などで php で表示させたいデータを一旦ファイルなどに出力してく
  • sub.py は php から起動せずに別途起動しておく
  • php は sub.py が書き出したファイルを読み込み表示する

投稿2016/10/20 22:42

hana-da

総合スコア1728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問