plotl.y данные датчика в реальном времени - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь добавить DHT22 (датчик температуры) на график plot.ly.

Тестовый пример, который я пытаюсь доказать, состоит в том, что можно передавать данные датчика в реальном времени на "сервере". В этом случае на сервере Rasberry.

Я получаю следующую ошибку, но не вижу, что не так ..

Датчик подключен к распберри на выводе GPIO (контакт 4, я полагаю)

ошибка: def update_graph_live (n): ^ SyntaxError: неверный синтаксис

(если вы увидите больше ошибок, мне бы очень хотелось знать;))

Заранее спасибо

Код:

from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import random
import plotly.graph_objs as go
import time
import datetime
from collections import deque
from dash.dependencies import Input, Output

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

tijdstip = datetime.datetime.now().strftime("%X")

import Adafruit_DHT 
import time 


humidity, tempratuur = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22,4)

humidity = round(humidity, 2) 
tempratuur = round(tempratuur, 2)  


X = deque(maxlen=20)
X.append(1)
Y = deque(maxlen=20)
Y.append(1)

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(

    [
    html.H4('Tempratuur Thuis'),
    html.div(id= 'live-update-text'),
        dcc.Graph(id='live-update-graph', animate=True),
        dcc.Interval(
            id='onterval-compnent',
            interval=10000,
            n_intervals = 0
        ),
    ]
)

@app.callback(Output('live-update-text', 'childeren'),
        [Input('interval-component', 'n_intervals')])

def update_metrics(n):
    tijdstip = datetime.datetime.now().strftime("%X")
    tempratuur = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)
    style = {'padding': '5px', 'frontSize': '16px'}
    return ([
        html.Span('tijdstip: {0:.2f}'.format(tijd), style=style),
        html.Span('tempratuur: {0:.2f}'.format(tijd), style=style),
    ]
@app.callback(Output('live-update-graph', 'figure'),
        [Input('interval-component', 'n_intervals')])

def update_graph_live(n):
    data = { 
        'tijd': [],
        'tempratuur':[],
    }

    for i in range(180): 
        tijd = datetime.datetime.now() - datetime.timedelta(seconds=i*20)
        tempratuur = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)

        data['tijd''].append(tijd)
        data['temp'].append(tempratuur)

    fig = plotly.tools.make_subplots(rows=2, cols=1, vertical_spacing=0.2)
        fig['layout']['margin'] = {
            'l': 30, 'r': 10, 'b': 30, 't': 10
        }
        fig['layout']['legend'] = {'x': 0, 'y': 1, 'xanchor': 'left'}

        fig.append_trace({
            'x': data['tijd'],
            'y': data['tempratuur'],
            'name': 'tempratuur',
            'mode': 'lines+markers',
            'type': 'scatter'
        }, 1, 1)

    return fig


if __name__ == '__main__':
    app.run_server(debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...