Я пытаюсь добавить 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)