> nun fehlt mir der Ansatz wie ich die Prüfung auf einmaliges Vorkommen jeder Zahl durchführe.
Such mal nach der set-Klasse.
> nun fehlt mir der Ansatz wie ich die Prüfung auf einmaliges Vorkommen jeder Zahl durchführe.
Such mal nach der set-Klasse.
> Mache ich etwas falsch oder darf man wirklich nur einmal pro 5 Minuten anfragen?
Es steht doch klar und deutlich da.
Wenn du alle 5 Minuten anfragst kannst du 12 Zaehler pro Stunde auslesen...
Den Wert fuer das Jahr musst du hoechstens einmal pro Jahr abfragen, 12 mal im Jahr fuer den Monat. Nach der Abfrage die Daten ablegen und schon braucht es nicht mehr so viele Abfragen.
Gib der Exception einen Namen und printe sie, dann weisst du mehr.
Das muesste eigentlich funktionieren, weil i2c fuer mehrere Slaves gedacht ist.
Checke zuerst die Pullups: sind die extern oder bringt jedes Board einen Pullup mit?
Was steht eigentlich in diesen CSVs?
Die ersten paar Seiten koennte man zusammenfassen:
* Anzeige der Waage
* Auswahlbox fuer den Namen des CSV-Files
* Eingabefeld fuer neue Namen
Dem Webserver ist AJAX ganz egal. Er braucht einfach eine Route die nur den aktuellen Wert der Waage ausliefert. Den Rest erledigt JavaScript.
> teetime
Wirklich?
Du suchst am falschen Ort. Das Update der Daten im Browser muss mit JavaScript realisiert werden.
Stichwort fuer Google: AJAX
Ich wuerde das so deuten:
* Connection reset by peer: der Pi ist tatsaechlich heruntergefahren
* Connection refused: der Pi ist heruntergefahren und gibt keine Antwort mehr
Reboot waere besser gewesen, jetzt bist du ausgesperrt...
> Wenn ich diese Tasten drücke, flackert mein Monitor und wird auch kurz schwarz.
Stromversorgung?
Die Module ziehen ziemlich viel Strom wenn sie loslegen.
Was gibt AT+CPIN? aus?
> Leider stimmt die Universal time mit der local time nicht überein.
Warum leider? Du bist anscheinend in Europa, und da gilt im Moment die Mitteleuropaeische Sommerzeit. Die geht 2 Stunden vor gegenueber UTC.
Dann schreib einfach mal den Output vom Script per Redirection in ein File.
Nach ein paar Zyklen kannst du das File mit Excel, Open Office Calc oder sogar Tableau / PowerBI auswerten.
Ein Python- oder R-Script kann das natuerlich auch wenn du das kennst.
Mit etwas JavaScript und einem Webserver bekommst du sogar eine Online-Darstellung.
Das Script schreibt ein CSV auf die Konsole, damit kann man auf jeden Fall was anfangen.
PiTS habe ich noch nie gesehen, da kann ich nichts dazu sagen.
> Ziel ist eine statistische Auswertung und graphische Aufbereitung von 4 Messwerten eines Senors.
Bedeutet was genau?
import thingspeak
import time
channel = thingspeak.Channel( id="....", api_key="...." )
for i in range(15,25):
try:
print( i )
result = channel.update( { "field1": i } )
print( result )
time.sleep( 30 )
except Exception as e:
print( e )
Display More
Laeuft bei mir. Der api_key ist der write key
Anscheinend hat Mosquitto auch einen WebSocket Server an Bord.
Eine Demo gibt es hier: http://test.mosquitto.org/ws.html
> 1) Könnte ich dem matplotlib auch sagen, dass er es dynamisch plotten soll?
Ja.das ist moeglich, zum Beispiel mit FuncAnimation(...). In diesem Fall wuerde ich die Achsen fixieren, sonst wird bei jeder Runde neu skaliert.
plt.pause(...) habe ich auch schon gesehen, das funktioniert wahrscheinlich auch.
> 2) Wenn ich mit der Maus über einem Punkt bin, kann ich dann ein Hoverfeld mit dem gezeigten Binomialkoeffizienten aufgehen lassen?
Habe ich bei reinem matplotlib noch nicht gesehen, aber plotly kann das. bokeh kann es zumindest fuer Bar-Charts.
> Das Laden des figure-Fensters dauert dann nochmal 20 Sekunden. Ist das normal?
1000 Zeilen sind 500500 Punkte!
matplotlib muss das Minimum und das Maximum in X- und Y-Richtung bestimmen, die Achsen entsprechend skalieren und dann die Punkte skalieren und einzeichnen. Wundert mich nicht dass das etwas dauert.
Probier mal diese Version:
import matplotlib.pyplot as plt
x = [0]
y = [0]
colors = ["red"]
row = [1]
def next_row( x, y, line ):
l = len( row )
p = -l * 5
dx = 10
py = -line * 10
r = [1]
x.append( p )
y.append( py )
colors.append( "red" )
p += dx
for i in range( l - 1 ):
value = row[i] + row[i+1]
r.append( value )
if value % 3 == 0:
colors.append( "blue" )
else:
colors.append( "red" )
x.append( p )
y.append( py )
p += dx
r.append( 1 )
x.append( p )
y.append( py )
colors.append( "red" )
return r
for line in range(1,51):
row = next_row( x, y, line )
plt.scatter( x, y, c=colors, s=2 )
plt.show()
Display More
Wie lange dauert das auf deinem System?
Die Idee dahinter: math-Funktionen eliminieren und nur einen Aufruf von matplotlib.