Posts by rasray

    @ Jürgen:

    Nein, die Sprache wird komplett vereinfacht. (Wie bei denen da oben auf der Insel ohne Benzin):

    Es gibt nur noch einen Artikel, also auch nur eine Deklination bei ALLEM!

    Also:

    ...der Anspruch des Kundis...

    ...zwei Kundis betreten den Laden...

    also auch: das Kundicenter

    Heyo;

    leider übersteigt dein Problem bei Weitem meine Kenntnisse; zumindest durchschaue Ich aber ein bisschen die Schwierigkeiten :(

    An welcher der vielen Möglichkeiten soll man jetzt suchen? Buster selbst, die node-Red-Version, Javascript, die Befehlsweitergabe, ...

    -Stimmt es, dass NodeRed WiringPi benutzt? Anscheinend hat der Entwickler aus Frust das Entwickeln aufgegeben?


    Kann man einfach so auch andere "Node-Quellen" benutzen oder zerschießt man sich damit eventuell alles?

    Habe beim Forschen (Viel von deinen Beiträgen gefunden) das hier gesehen, ist zumindest mit 7 Monaten etwas aktueller:

    https://github.com/redplc/node-red-contrib-redplc-piface


    Schon mal versucht?


    Good Night;

    rasray

    Ich habe jetzt mal kurz in die readme-Datei von node-pifacedigital reingeschaut:

    https://github.com/tualo/node-pifacedigital


    Dort ist ja zum Beispiel Folgendes zu finden:


    Quote

    Setting output value:

    Code
    pifacedigital --type set --pin 1 --value 1

    Dies wäre also wohl der Kommandozeilenbefehl für node-pfd, um den Pin 1 einzuschalten.

    -->Schon mal getestet?

    Die Frage bleibt: Wie gebe Ich dem nun den Parameter für die Board-Nummer mit? (Ich würde erwarten, dass mit dem obigen Befehl per Default das erste Board angesprochen wird).

    Ein bisschen tiefer kommt dann Folgendes:

    Quote

    Constructor

    The constructor of PIFaceDigital takes two arguments. HW_ADDR the address of your board (setted via jumper) and the optional closeOnExit if true all output pins will reset to 0 if the node process receives the exit signal.

    Code
    var PIFD = require('node-pifacedigital');
    var pi = new PIFD.PIFaceDigital(0,true);

    ...und da hört meine Interpretationsgabe dann auf. In diesem "Constructor" wird anscheinend die Board-Nummer als HW_ADDR zugewiesen.

    Jetzt also der verzweifelte Hilferuf an die Software-Götter in diesem Forum: Wird hier der Name "pi" dem ersten Board (=0) zugeordnet und das "true" bedeutet mit der Option "CloseOnExit"?

    Okay, also mal kurz zusammenfassen:


    1. Der gleiche Aufbau hat unter Stretch und Jessi funktioniert?

    2. Dann hast Du ein Update auf Buster gemacht? Oder eine komplette Neuinstallation?

    3. Und jetzt hast Du den Effekt, dass beim Schalten eines Ausgangs alle Ausgänge des ersten Boards geschaltet werden?

    4. Meine Zeilen haben dagegen genau den gewünschten Ausgang geschaltet?


    Ich tippe ja auch darauf, dass Node den Befehl quasi nur für ein Board des Racks ausgibt, auf die Schnelle habe Ich eben mal in den Code reingesehen und finde keinen Befehl für "Board-Nummer". Würde ja aber keinen Sinn machen, wenn es früher mit dieser Software funktioniert hat... :conf:

    Moin, RS_Tobi,


    Klar sind solche All-in-One-Lösungen super. Aber "damals" wollte Ich keine Riesenprojekte mit allem drum und dran installieren, bei denen Ich dann nicht weiß, was dadrin passiert. Blöderweise dachte Ich, dieses PiFace würde es mir mit den Schraub-Anschlüssen und den beiden Relaiseinfacher machen. "Damals" hat der Hersteller auch aktuelle Software und Beispiele geliefert. Seitdem kümmert er sich aber nicht mehr um diesen Teil.


    Wie auch immer; Ich habe so nach und nach meinen eigenen Kram mit Python-Scripten, Webserver, PHP-Seiten zum Anzeigen und Steuern, RRD-Datenbank zum Auswerten und Diagramme-Erzeugen stümperhaft zusammengedengelt -erstaunlicherweise funktioniert es irgendwie :^^:


    Jedenfalls ruft bei mir python die Befehle auf, die das PiFace dann ausführt. Und so bekomme Ich auch Fehlermeldungen, wenn etwas vermurkst ist. (-Wie sieht das jetzt bei deinem System aus, spuckt das auch eine Logfile oder sowas aus?)

    Ich würde jetzt jedenfalls nicht sagen, dass das Problem an Buster liegt, sondern vielleicht eher daran, dass die PiFace-Bibliotheken oder eben dein tualo node-pifacedigital nicht daran angepasst wurden.


    Also wäre meine Idee, erst einmal möglichst direkt das Rack anzusprechen. So würde man auch vielleicht auch sehen, ob durch dein Programm diese Dateien installiert worden sind.

    Okay, also irgendjemand kümmer sich noch ansatzweise um diesen github:

    https://github.com/piface/pifa…lio/blob/master/README.md


    Vielleicht wurde also die Grundinstallation inzwischen angepasst (Wie gesagt musste Ich beim Wechsel auf Buster noch eine Datei manuell ändern - Der Rest der Dateien des Projekts ist allerdings total veraltet)

    Wie beschrieben zuerst System aktualisieren

    sudo apt-get update

    sudo apt-get upgrade


    Dann schauen, ob SPI aktiviert ist (Müsste ja aber bei Dir der Fall sein, es tut sich ja was beim Ansteuern)

    sudo raspi-config


    Dann pip3 installieren, falls noch nicht geschehen:

    sudo apt install python3-pip


    Und jetzt käme die Installation der PiFace-Komponenten, hier wird es also interessant: Sind die bei Dir schon installiert gewesen?

    sudo pip3 install pifacecommon

    sudo pip3 install pifacedigitalio


    Wenn das gelaufen ist, vielleicht zur Sicherheit einmal das System Neustarten:

    sudo reboot


    Anschließend Terminal wieder öffnen und python starten

    python3

    Die folgenden Befehle sollten jetzt etwas bewirken, also Vorsicht, falls an Deinen Anschlüssen aktuell etwas verbunden ist -und immer nur einen Befehl eingeben:

    import pifacedigitalio

    pfd = pifacedigitalio.PiFaceDigital()

    Der nächste Befehl sollte das erste Relais (Start der Bezeichnungen bei 0) auf dem ersten Board schalten:

    pfd.relays[0].value = 1

    (Falls das nicht klappt, Meldung kopieren und rückmelden, vielleicht muss hier dein Board erst initiiert werden)


    Wieder ausschalten:

    pfd.relays[0].value = 0

    Die anderen Ausgänge heißen "leds", um den zweiten schaltbaren Ausgang (Nummer 1)einzuschalten:

    pfd.leds[1].turn_on()

    wieder aus:

    pfd.leds[1].turn_off()


    Mal gespannt, ob sich so schon mal was bei Dir tut.

    rasray

    Hi, RS_Tobi;


    Leider habe Ich keine Ahnung von IOBroker oder NODERED.

    Aber vielleicht kann man ja mal Ausschlussdiagnostik betreiben...


    Also:

    1: Wie sieht es denn aus, wenn Du statt des Racks nur EIN PiFace anschließt?

    (Vielleicht liegt es ja an der fehlenden Trennung der Adressen Rack -> Port des Racks)


    2: Da Du ja als Basis RaspiOS hast: kannst Du das PiFace auch ohne IOBroker/NODERED ansprechen?

    (Python-Scripte über Pifacedigitalio...)


    Habe auch ein PiFace an einem Model B Rev2 laufen. Vor ziemlich langer Zeit auf Buster upgedated und damals auch ziemliche Probleme gehabt, es an's Laufen zu bekommen. Leider ist die Dokumentation und der Support des Piface unter aller XXX; die offiziellen Seiten liefern selbst schon falsche Angaben.


    Also Ich habe damals händisch die PiFace-Software über pip3 installiert, musste aber auch noch eine Änderung in einer Datei "spi.py" eintragen, die darüberhinaus auch nicht in dem eigentlich angegebenen Pfad steckte...

    Eventuell liegen die Entwickler deiner Software da auch noch etwas daneben?


    Alles nur geraten!

    Grüße;


    rasray

    Hiho; Sc0rc3d!


    rrdtool ist oft nicht gerade einfach zu durchschauen...


    Also Du hast

    rrdtool create outtemp.rrd --step 3600

    bedeutet: Die Datenbank outtemp.rrd erwartet alle 3600s (also jede Stunde) einen Input

    (-bzw bildet den Mittelwert aus mehreren Inputs alle 3600 Sekunden). Das ist also später die maximale Datenauflösung.


    DS:temp0:GAUGE:1200:-40:60

    bedeutet: Eine Datenreihe temp0 wird erzeugt. Die 1200 sind die Sekunden, in denen mindestens ein Input erfolgen muss, sonst erzeugt das System eine Lücke im Graphen. Wenn Du dein Script nun 1x/Stunde laufen lässt, würde es die Punkte nicht verbinden. Bei 7200 (Sekunden) würde es dagegen in der Grafik die Linie verbinden, auch wenn mal in einer Stunde ein Wert fehlen würde.

    Irgendwie finde Ich es sinnvoller, diesen Wert höher als den step zu setzen, bestenfalls gleich, aber auf keinen Fall niedriger (Oder Du musst auch das script mindestens alle 20 Minuten laufen lassen (=1200 s), dann bildet rrd jede Stunde (=3600s daraus einen Mittelwert, der in der Datenbank gespeichert wird.)


    Zu deinen Werten:

    last_ds zeigt, dass wohl Werte eingegangen sind

    Direkt darunter sollte aber bei value eine Zahl stehen im Format zB:

    .value = 2.5741788000e+02


    Das NaN bei deinen Werten steht eigentlich für "Not a Number", also gibt es keinen Wert


    Jetzt weiß Ich nicht, ob das an obigem "Auslassen" liegt oder ob es ein sonstiges Problem gibt.


    Vielleicht also:


    Code
    rrdtool create outtemp2.rrd --step 3600
    DS:temp0:GAUGE:7200:-40:60
    DS:temp1:GAUGE:7200:-40:80
    RRA:AVERAGE:0.5:1:240
    RRA:MIN:0.5:96:3600
    RRA:MAX:0.5:96:3600
    RRA:AVERAGE:0.5:96:3600


    Deine erste rra bedeutet, dass jeder 1-Stunden-Mittelwert geschrieben wird (1 step=3600s)und 240 davon aufbewahrt werden, erst dann überschreibt rrd den Ältesten dieser Werte.

    Die 96 bei den nächsten rra's bedeuten, dass von diesen 1-Stunden-Werten 96 gesammelt werden, dann erst wird aus diesen 96 Werten ein Mittelwert gebildet. Und davon hebst Du 3600 auf, bevor der älteste überschrieben wird.

    Also wirst Du erst nach 96 Stunden den ersten dieser MIN/MAX/AVERAGE haben! (Also nach vier Tagen!)

    Alle Vier Tage käme dann erst der nächste Wert und von diesen 4-Tage-Werten würdest Du 3600 aufbewahren.

    (Grob gerechnet könntest Du also 40 Jahre darauf zurückgreifen, erst dann wird der älteste Wert überschrieben)



    Das Sekunden-in-Stunden-Tage-Wochen-Jahre umrechnen ist ja sehr unübersichtlich. Es ist mittlerweile einfacher geworden, diese Intervalle anzugeben, hier ist der step mal 10 Sekunden:



    Code
    rrdtool create blabla.rrd --step 10
    DS:ds0:GAUGE:5m:0:U
    RRA:AVERAGE:0.5:5m:300h
    RRA:AVERAGE:0.5:15m:900h
    RRA:AVERAGE:0.5:1h:50d


    Alle 10 Sekunden wird ein neuer Mittelwert gebildet und zwischengespeichert.

    Die DS hat eine maximale Toleranz von 5 Minuten, erst dann würde man in der Grafik eine Lücke erhalten.


    Die erste RRA erlaubt es nachher 300 Stunden lang, auf die 5-Minuten-Mittelwerte zuzugreifen

    Die zweite RRA erlaubt es nachher 900 Stunden lang, auf die 15-Minuten-Mittelwerte zuzugreifen

    Die dritte RRA erlaubt es nachher 50 Tage lang, auf die 1-Stunden-Mittelwerte zuzugreifen


    Also ist es sinnvoll, zuerst zu überlegen, wie klein die Minimal-Intervalle sein sollen, die man später auflösen will. Wenn Dir eine Stunde reicht, also step bei 3600 lassen.

    Hast Du verlässliche 1-Stunden-Updates, kannst Du den DS-Wert auf 1h setzen, dann bekommst Du später im Diagramm eine Lücke, sobald mal ein Update nicht gelaufen wäre.

    Sinnvoll finde Ich dann aber schon, sich auch die grundsätzlichen RRA's anzeigen zu lassen, also immer für Average/MIN/MAX bei Dir "1h" zu setzen.

    Wie lange rückwirkend Du dann Grafiken in dieser Auflösung erzeugen kannst, hängt dann an der letzten Zahl.

    Sobald Du ein Diagramm erzeugen willst, das über diesen Zeitraum hinaus geht, wird rrd dir dann nur die nächsten (gröberen) "Averages"... zeichnen, also zB den Tages-/Wochen-/Monats-Durchschnitt -falls Du dafür eine rra definiert hast.


    Äääääääh, irgendwie ein bisschen viel geworden ;)

    Ich nochmal:

    Hatte ewig nicht mehr in die Dokumentation von rrdtool reingeschaut: Es ist mittlerweile einfacher geworden, diese Intervalle anzugeben:

    Code
    rrdtool create subdata.rrd -s 10 
    DS:ds0:GAUGE:5m:0:U
    RRA:AVERAGE:0.5:5m:300h
    RRA:AVERAGE:0.5:15m:300h
    RRA:AVERAGE:0.5:1h:50d

    Das alte Sekunden-in-Stunden-Tage-Wochen-Jahre umrechnen war ja sehr unübersichtlich.

    Jetzt zB die zweite RRA:

    Es wird ein 15-Minuten-Mittelwert gebildet, dieser bleibt 300 Stunden gespeichert, dann überschreibt rrdtool diesen Wert.

    Hallo, AndreasO;

    wieder was gelernt, das N: war mir klar, das erzwungene stringformat kannte Ich so noch nicht, deshalb arbeitete Ich bisher wie beschrieben.


    Zu #6:

    Jou, da Du in allen rra's da "1" drin hattest, erzeugt rrd EINE Zeile, die dann wieder überschrieben wird -> keine Grafik erzeugbar.


    Wichtig ist immer dein step: 60 Sekunden


    "RRA:AVERAGE:0.5:1:2000":

    Die "1" bedeutet hier, dass jeder Einzelwert ohne Mittelung gespeichert wird.

    Die "2000" bedeutet, dass davon 2000 gespeichert werden, der 2001te überschreibt dann den Ältesten.

    Bei einem step von 60 kannst Du also in einer Grafik auf die letzten 120.000 Sekunden als Einzelwerte zurückgreifen.


    Mittelwerte:

    Deine zweite rra hattest Du mit "10" angelegt.

    Also wird hier jeweils aus 10 steps ein Mittelwert gebildet

    -> Alle 600 Sekunden = 10 Minuten. Auch hier gibt die letzte Zahl an, wieviele dieser Zeilen gespeichert bleiben sollen.

    Bei "144" bleiben diese 10-Minuten-Mittelwerte also für einen Tag verfügbar. (60*10*144 = 86400 Sekunden = 24 Stunden)


    Eine 3. RRA:AVERAGE:0.5:1440:3600 bildet also einen Mittelwert über einen ganzen Tag (1440*60 Sekunden), speichert davon 3600 ab, reicht also für 10 Jahre, erst dann würde der älteste dieser Tages-Mittelwert überschrieben.

    Hiho;


    Frage: rrdtool braucht doch für das updaten die genaue syntax:

    Code
    rrdtool update demo.rrd N:3.44

    -> trägt den Wert 3.44 für den aktuellen Zeitpunkt ein.


    -Was bewirkt in Zeile 51 das 'N : %s' ?


    Dann:

    rrdtool akzeptiert bei mir keine float- oder integer-Werte, sondern nur strings.


    Deine gezeigte Database hat jedenfalls nur eine Zeile (die 59), eigentlich sollten da eben viele erzeugt werden.

    Also mal versuchen, das j mit

    Code
     j=str(int(dif*60/10))

    umzuwurschteln.

    Hi, __deets__


    Ou, Mann, Ich sollte endlich das mit dem Biertrinken aufgeben!!!

    Hatte im Terminal den ssh-befehl über <Strg+r> gesucht und dabei genau den Versuch erwischt, in dem Ich eine ".1" vergessen hatte.

    ping und alles von Hand eingegeben hat dann natürlich gestimmt. Dank deines Befehls habe Ich gesehen, dass eine IP mit nur 3 Stellen gesucht wurde, ist mir die ganze Zeit nicht aufgefallen.

    Also, dass diese Rechner auch so pingelig mit den IP-Adressen sind...


    Danke für den Schlag auf den Hinterkopf;


    rasray (der Fehler vor dem Monitor)

    Gnom:

    Also keiner hat was gegen Hinterfragen, und im Moment wäre eine schöne Frage an unsere "Obrigkeit", wo z.B. diese ganzen Abermilliarden herkommen...

    Aber bei vielen der von Dir als "Spinner, Verschwörungstheoretiker und Staatsfeind" benannten Personen fehlt mir häufig das Hinterfragen der eigenen "Quellen".


    rasray

    @210: Ich würde sagen: Siehe aktuelle Lage im Johnson- und im Bolsonaro-Land, ist für mich Beweis genug. ("...ist doch nur eine kleine Grippe").

    -oder meinst Du es umgekehrt: Ob es in den Ländern mit hohen Todeszahlen jetzt nicht so viele ... gibt?