2017-06-13 11 views
0

私は、コマンドからストリームをいくつかのデータを記録しようとしている:コマンドをカール記録したテキストファイルへのカールからのデータストリーム

curl https://api.particle.io/v1/devices/events?access_token=blahblahtoken

は、粒子の雲に耳を傾け、私が送信するすべてのメッセージを出力しますパーティクルデバイスの間で端末に受信することができます。出力をテキストファイルに保存したい。

私が試してみた:

  • カールURLを>
  • カールURL OUTPUT.TXT >>何も働いていない

output.txtと

  • カールのURL -o output.txtと、Mac、またはLinuxで使用できます。ファイルは作成されます(または該当する場合は切り捨てられます)。ただし、重複した端末ウィンドウがcurlコマンドの出力を出力している場合でも、ファイルに何も書き込まれることはありません。

    唯一の推測では、curlコマンドは、Ctrl + Cを押すまで無期限に続き、そのように終了すると出力がファイルに記録されないことがありますか?データが入ってくると、どのように出力をファイルに記録できますか?

  • +0

    :「イベントリスナーは」(この場合は「CURRENTTIME」に)あなたの粒子が放出された場合の文字列に一致する必要があることに注意してくださいGET/v1/devices/events?access_token = blahblahtoken ホスト:api.particle.io しかし、私はそれがhttpsであることに気付きました。 – Cuagau

    答えて

    1

    私は約10年間cURLを使っていましたが、コマンドラインからそのようなデータをストリームする方法はわかりません。 C APIで使用できるCURLOPT_WRITEFUNCTIONがありますが、独自のCモジュールを作成したいとは思っていません。マニュアルページをスキャンし、CLIで利用可能な同様のオプションを見つけることができませんでした。私はcURLコマンドラインがあなたが必要とすることをするオプションを提供しているとは思わない。あなたが疑うように、出力前にページ全体が受信されるまで待機します(圧縮されたページではしばしば必要です)。

    +0

    Curlは私には新しいものですが、仕事を終えたら自分のモジュールを書くのに十分なほどCを使いました。私は家に帰るときにそれをやりますが、CURLOPT_WRITEFUNCTIONに慣れるために見てみるべき特別な例はありますか? – cjameston

    0

    私はこの質問にも出て、カールからパーティクルイベントストリームを記録することを望んでいました。カールはそれを行うことができないので、私は必要なものを実行するクイックノードスクリプトを書いた。それをここに置くと、他の誰にとっても役立ちます。私はその後、 `のtelnet api.particle.io 80`と をお勧めするつもりだった

    #!/usr/bin/env node 
    
    var EventSource = require('eventsource'); 
    var fs = require('fs'); 
    
    var URL = 'https://api.particle.io/v1/products/power-monitor-v001/events?access_token=XXXXXXXX'; 
    
    var es = new EventSource(URL); 
    es.addEventListener('currentTime', function (e) { 
        console.log(e.data) 
        fs.appendFileSync('test.json', e.data); 
    }) 
    
    関連する問題