2017-02-16 9 views
0

このポストをクリックしていただきありがとうございます。私のカメラIP用のウィジェットを追加したRPI 3にはDashingのダッシュボードがあります-link DSC 4201)。実は、私の仕事は(@ oldFile1、@ newFile1で)のみ最初の2枚の画像を表示した後カメラIP(D-LINK DSC 4201)のsnapshot.jpgがダッシュでリフレッシュされない

require 'net/http' 

@cameraDelay = 1 # Needed for image sync. 
@fetchNewImageEvery = '3s' 

@camera1Host = "192.168.0.20" ## CHANGE 
@camera1Port = "80" ## CHANGE 
@camera1Username = 'admin' ## CHANGE 
@camera1Password ='*****' 
@camera1URL = "/dms?nowprofileid=1&" 
@newFile1 = "assets/images/cameras/snapshot1_new.jpg" 
@oldFile1 = "assets/images/cameras/snapshot1_old.jpg" 


def fetch_image(host,old_file,new_file, cam_user, cam_pass, cam_url) 
    `rm #{old_file}` 
    `mv #{new_file} #{old_file}`  
    Net::HTTP.start(host) do |http| 
     req = Net::HTTP::Get.new(cam_url) 
     if cam_user != "None" ## if username for any particular camera is set to 'None' then assume auth not required. 
      req.basic_auth cam_user, cam_pass 
     end 
     response = http.request(req) 
     open(new_file, "wb") do |file| 
      file.write(response.body) 
     end 

     end 
    new_file 
end 

def make_web_friendly(file) 
    "/" + File.basename(File.dirname(file)) + "/" + File.basename(file) 
end 

SCHEDULER.every @fetchNewImageEvery do 

     new_file1 = fetch_image(@camera1Host,@oldFile1,@newFile1,@camera1Username,@camera1Password,@camera1URL) 

    if not File.exists?(@newFile1) 
     warn "Failed to Get Camera Image" 
    end 
    send_event('camera1', image: make_web_friendly(@oldFile1)) 
    sleep(@cameraDelay) 
    send_event('camera1', image: make_web_friendly(new_file1)) 

end 

Camera-widget Link

私のカメラのsnapshot.jpegをキャッチルビーの求人があります彼は私のダッシュのダッシュボードにキャッチする最初の2つの画像だけを表示するループの在庫だった。

私は/ assetsを見て、自分の仕事のようにリアルタイムで2つのsnapshots.jpgを更新しましたが、ダッシュのダッシュボードには表示されません。

なぜ、ダッシュボードはリフレッシュイメージを取っていないのですか?

答えて

0

今日はこの問題に直面しました。少し書き直しを終えました。これは、ファイル名が同じであるという点で、ブラウザのキャッシュの問題であることは間違いありません。ちょうどdatetimeを追加し、それを押して動作するように見えた。

require 'net/http' 
require 'open-uri' 

@url = 'http://172.1.1.16/image.jpg' 

SCHEDULER.every '4s', :first_in => 0 do |job| 

    `find '/dashing/f12dash/assets/images/cameras/' -type f -mmin +1 -print0 | xargs -0 rm -f` 

    @currentTime = Time.now.strftime("%Y-%m-%d_%H-%M-%S") 
    @newFile1 = "assets/images/cameras/snapshot-" + @currentTime + "_new.jpeg" 

    open(@url, :http_basic_authentication => ['root', 'CamPW']) do |f| 
     open(@newFile1,'wb') do |file| 
     file.puts f.read 
     end 
    end 

    send_event('camera1', image: ("/" + File.basename(File.dirname(@newFile1)) + "/" + File.basename(@newFile1))) 

end 
+0

おかげでたくさんのスクリプトが見つけ働いたがimage.jpegは時々開始時に、多分、すべての5枚の画像のようなダッシュボードに表示されていなかった未知の理由のために、私は彼らがあまりにも重いですが、明らかにそれはだからだと思います事実ではありません。同じ問題がありましたか? – Thibz

関連する問題