मैं HTML पृष्ठ पर आंतरिक सेंसर से तापमान कैसे प्रदर्शित करूं?


14

मैं बस इसमें शामिल हो रहा हूं और जब तक मैं एसएसएच के माध्यम से अस्थायी प्रदर्शित कर सकता हूं, मैं इसे अपने पीआई पर चलने वाले एपाचे 2 पर थोड़ा वेबपेज पर प्रदर्शित करने के साथ संघर्ष कर रहा हूं। मैंने इस उदाहरण का अनुसरण किया http://www.raspberrypi.org/phpBB3/viewtopic.php?t=35487&p=310038 जिसमें कुछ AJAX और एक स्क्रिप्ट को cgi-bin डायरेक्टरी में शामिल किया गया था, लेकिन मुझे एक त्रुटि मिलती है कि $ was not definedऔर वास्तव में क्लूलेस होना जावास्क्रिप्ट के साथ, मुझे कोई सुराग नहीं है कि त्रुटि कहाँ है। मैं सोच रहा हूं कि क्या यह cgi-bin डायरेक्टरी हो सकती है। मैंने अभी इसे बनाया है और स्क्रिप्ट के लिए इसके उपयोग को सक्षम करने के लिए मुझे कुछ विशेष करने या न करने के बारे में जानकारी नहीं मिल पाई है। क्या कोई मेरे लिए उस सवाल का जवाब दे सकता है? यदि यह प्रासंगिक है, तो मैं रास्पबियन का नवीनतम संस्करण चला रहा हूं।

आखिरकार, मैं एक डेटाबेस से मानों को लॉग इन करना चाहता हूं और इससे ग्राफ बनाना चाहता हूं, लेकिन पहले चीजें। :)

मुख्य सवाल यह है कि मैं आंतरिक सेंसर से अपने वेबपेज पर तापमान कैसे प्रदर्शित कर सकता हूं?

संपादित करें

मैं आज रात को घर पहुंचने के बाद पहले सुझाव की कोशिश करूंगा, लेकिन मुझे जल्दी ही दूसरा (लेनिक) मिल गया, जो अच्छा काम कर रहा है। हालांकि काम करने के लिए मुझे कुछ संपादन करने पड़े। स्क्रिप्ट rrd फ़ाइल नहीं बनाएगी इसलिए मैंने इसे स्क्रिप्ट में उपयोग किए गए वाक्यविन्यास का उपयोग करके मैन्युअल रूप से बनाया है। मैंने UPDATEकमांड को भी संशोधित किया क्योंकि यह उस मूल्य को पसंद नहीं करता था जो इसे पारित किया जा रहा था। मुझे कमांड widthसे भाग को हटाना पड़ा GRAPHक्योंकि इसने एक त्रुटि भी फेंक दी। फिर अंत में, मैंने एक जोड़ा cpताकि वह फाइल को वेबसाइट की इमेज डायरेक्टरी में रखे और फिर जोड़े*/5 * * * * /home/root/scripts/temprec.sh >/dev/null 2>&1मेरे crontab के लिए तो यह हर 5 मिनट चलता है। यह काम करने लगता है, लेकिन केवल 4 नमूनों के साथ अब तक यह सुनिश्चित करना मुश्किल है। अगर मेरे संपादन ने काम किया है तो एक या एक घंटे के भीतर मुझे एक बेहतर विचार मिलेगा।

#!/bin/bash
#
# update .rrd database with CPU temperature
#
# $Id: update_cputemp 275 2013-05-16 05:20:56Z lenik $
# Thanks to Lenik @ Raspberrypi.stackexchange.com.
cd /path/to/scripts
# read the temperature and convert .59234. into .59.234. (degrees celsius)
TEMPERATURE=`cat /sys/class/thermal/thermal_zone0/temp`
TEMPERATURE=`echo -n ${TEMPERATURE:0:2}; echo -n .; echo -n ${TEMPERATURE:2}`
/usr/bin/rrdtool update cputemp.rrd N:$TEMPERATURE
/usr/bin/rrdtool graph cputemp.png DEF:temp=cputemp.rrd:cputemp:AVERAGE LINE2:temp#00FF00
cp /path/to/scripts/cputemp.png /path/to/website/images

जवाबों:


16

$ लगता है कि आप jQuery का उपयोग करने की कोशिश कर रहे हैं । यदि यह मामला है, तो आप इसे डाउनलोड और इंस्टॉल करना चाह सकते हैं।

चूंकि आप पाई पर हैं, इसलिए मैं टोरनेडो का उपयोग करके अपने स्वयं के वेब एप्लिकेशन को लिखने की कोशिश करने की भी सिफारिश करूंगा । यह पायथन (पाई की पसंदीदा भाषा) का उपयोग करके लिखा गया है, और मुझे हमेशा इसका उपयोग करके वेब एप्लिकेशन बनाना बहुत आसान लगता है।

बस इसे 'sudo apt-get install python-tornado' का उपयोग करके स्थापित करें। मैंने सिर्फ एक न्यूनतावादी बवंडर वेब-ऐप लिखा है, जिसे आप एक फंक्शन ले कर देख सकते हैं (मैं इसका परीक्षण नहीं कर सका) कुछ अन्य मंच पद से :

#!/usr/bin/env python

import tornado.ioloop
import tornado.web
import os

class MainHandler(tornado.web.RequestHandler):
    def getCPUtemperature( self ):
        res = os.popen('vcgencmd measure_temp').readline()
        return(res.replace("temp=","").replace("'C\n",""))

    def get(self):
        self.write( "Temperature: %s" % ( self.getCPUtemperature() ) )

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

यदि आप इस कार्यक्रम को चलाते हैं (chmod +x yourprogram.py ; ./yourprogram.py ), तो आप अपने ब्राउज़र को http: //raspberrypi.local: 8888 / पर देखें और आउटपुट देखें।

अपडेट: मैंने घर पर सिर्फ उपरोक्त स्क्रिप्ट की कोशिश की, और यह काम करता है। अच्छा नहीं है, लेकिन यह एक शुरुआत है!


इसके लिए धन्यवाद। जब मैं आज रात घर जाऊंगा तो मैं इसे विदा देने जा रहा हूं क्योंकि मुझे इसके पीछे का विचार पसंद है।
ट्रिडो

13

कुछ समय पहले मैंने एक ही समस्या के बारे में " रास्पबेरी पाई :: मॉनिटरिंग सीपीयू तापमान विद आरआरडीटीओओएल " लिखा था । मेरे समाधान में सीपीयू से तापमान प्राप्त करना, इसे राउंड-रॉबिन डेटाबेस में सहेजना और .PNG फ़ाइल के रूप में एक अच्छा ग्राफ़ बनाना शामिल है, जो कि वेब पेज पर डालना काफी आसान है - बस इसे जहाँ चाहें कॉपी कर लें। मुझे आशा है कि आप इसे उपयोगी पाएंगे।

यहाँ छवि विवरण दर्ज करें


1
इसके लिए धन्यवाद। मुझे इसे संपादित करना था, लेकिन मुझे यह काम कर गया और इसने बैश स्क्रिप्टिंग और आरआरडी के बारे में कुछ नई चीजें सिखाईं, जिनके बारे में मुझे कम जानकारी है। मैंने अपनी पोस्ट को संपादित किया कि मैंने क्या किया और उम्मीद है कि यह किसी और को मदद करता है जो यह जानना चाहता है कि यह कैसे करना है।
ट्रिडो

2

मेरा मानना ​​है कि आप अपने आरपीआई से डेटा को पकड़ सकते हैं और स्ट्रीम कर सकते हैं और इसे इस पैकेज के साथ ब्राउज़र में GitHub पर एम्बेड कर सकते हैं ।

यहां बताया गया है कि ग्राफ़ कैसा दिखता है: https://plot.ly/~jensb89/12/

एक बार जब आप अपना ग्राफ तैयार कर लेते हैं, तो आप इसे इस स्निपेट के साथ iframe के रूप में एम्बेड कर सकते हैं:

<iframe id="igraph" src="https://plot.ly/~abhishek.mitra.963/1/400/250/" width="400" height="250" seamless="seamless" scrolling="no"></iframe>

आप कोड में अपने URL में स्वैप करना चाहेंगे। मुझे बताएं कि क्या आपके पास कोई मुद्दा है या मैं कुछ भी मदद कर सकता हूं। इसके अलावा, मैं प्लॉटली का हिस्सा हूं, जिसका उपयोग इस पैकेज में किया गया था।

यहाँ है कि यह कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें


यह वास्तव में अच्छा लग रहा है।
ट्रिडो

1

यहां अन्य जवाब शानदार हैं। शेल स्क्रिप्ट और PHP का उपयोग करके मेरा समाधान इस प्रकार है:

कृपया ध्यान दें कि मैंने यह रास्पियन व्हीजी पर किया था, इसलिए मेरे सभी कोड का स्थान इसमें है /var/www/। यदि आप जेसी का उपयोग कर रहे हैं, तो इसे '/ var / www / html /' में होना चाहिए।

सबसे पहले उपयोगकर्ता को रूट (सुपर उपयोगकर्ता) पर स्विच करने देता है:

  • sudo su (और अपना पासवर्ड डालें)

सही स्थान पर जाएं:

  • cd /var/www/ (खरखरा)

अब वहां एक नई निर्देशिका बनाएं:

  • mkdir scripts

इसे सही विशेषताएँ दें:

  • chmod 755 scripts/

अब इसमें एक नई फाइल बनाएं, इसे 'temp.sh' कह सकते हैं।

  • nano scripts/temp.sh

निम्नलिखित कोड दर्ज करें:

#!/bin/bash

cpuTemp0=$(/opt/vc/bin/vcgencmd measure_temp)
cpuTemp0=${cpuTemp0//\'C/}
cpuTemp0=${cpuTemp0//temp=/}

echo CPU: $cpuTemp0 > /var/www/include/temp.txt

Ctrl+X- Y- Enterबचाने और बाहर निकलने के लिए।

अब उस फ़ाइल की विशेषताओं को सेट करें:

  • chmod 755 scripts/temp.sh

अब एक नई निर्देशिका बनाएँ

  • mkdir include/

सेट यह गुण है

  • chmod 744 include/

ठीक है, अब स्क्रिप्ट चलाता है और परीक्षण करता है कि यह आउटपुट है:

  • cd scripts/
  • ./temp.sh
  • cd ../include/
  • cat temp.txt

इसे कुछ इस तरह प्रदर्शित करना चाहिए:

53.5

बहुत बढ़िया! अब, इसे एक मिनट में एक बार चलाने की सुविधा दें। हम Crontab में एक नई लाइन दर्ज करेंगे।

  • crontab -e

फाइल के निचले भाग में नीचे की तरफ पेस्ट करें

* * * * * /var/www/scripts/temp.sh

Ctrl+X- Y- Enterबचाने और बाहर निकलने के लिए।

अब हमें उस पृष्ठ को संपादित करने की आवश्यकता है जिस पर तापमान प्रदर्शित किया जाएगा। तो हम PHP फ़ाइल को संपादित करते हैं:

  • cd /var/www/
  • nano index.php

और इसे <div>अपनी पसंद से डालें :

<?php require_once("include/temp.txt"); ?>&#176;C

वह कर देगा। बस अपने पृष्ठ को पुनः लोड करें और आपको सीपीयू और जीपीयू टेम्पों को प्रदर्शित होते हुए देखना चाहिए।

जोड़ा गया बोनस: मैं हर बार लोड करने के लिए पेज को मजबूर करना पसंद करता हूं (ब्राउज़र को तापमान को रोकने से रोकना) ऐसा करने के लिए, मैं फ़ाइल की शुरुआत में निम्न PHP भी शामिल करता हूं:

<?php
    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0");
?>

नोट: मेरे लिए यह काम करने का कारण यह है कि यह एक कंपनी "डैशबोर्ड" पर प्रदर्शित होता है, मेरे कार्यालय में एक टीवी पर एक पृष्ठ जो रेखांकन (सर्वर स्थिति, उपयोगकर्ता संख्या, लोड औसत, आदि) का एक पूरा गुच्छा दिखाता है, आदि। आदि)। मैंने पाई को कियॉस्क मोड में रखने के लिए स्थापित किया है (आइसव्हील का उपयोग करके बूट पर पूर्ण स्क्रीन ब्राउज़र) और एकल पृष्ठ को दिखाता है जो नीचे तक ऑटो-स्क्रॉल करता है। ऊपर से वहां पहुंचने में लगभग 4 से 5 मिनट का समय लगता है और फिर नीचे से टकराते ही यह अपने आप फिर से लोड हो जाता है। तो यह एक समय में एक बार पुनः लोड करता है, मुझे क्लाइंट-साइड तकनीक का उपयोग करके तापमान प्रदर्शन को अपडेट करने की आवश्यकता को दरकिनार कर देता है। मैंने इसे उपयोगकर्ता एजेंट (कोई स्क्रॉलिंग, कोने में कोई वर्तमान समय, तल पर कोई पुनः लोड नहीं) के आधार पर अलग-अलग CSS / JS का उपयोग करके देखा है, लेकिन उस संस्करण पर, मैंने '

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.