Modul zur Nutzung der Raspberry Pi GPIO

Hi Joachim,

seltsamerweise hängt sich IPS immer auf wenn ich bei einem unter Windows laufendem IPS Deine Module updaten will.

Auf einem Raspberry klappt das.

Im Log von IPS dann das gefunden:

Call to undefined method IPS2GPIO_PCF8574::EableAction() Zeile 42 !

Da hat sich doch tatsächlich ein kleines dämliches „n“ aus dem Staube gemacht.

Oder ist Zeile 42 nur eine Kopiervorlage und somit überflüssig?

In der Hoffnung dass die IPS Hänger damit gelöst sind.

mfg

BerndJ

Hallo Bernd,

habe in einigen Modulen public function(s) geändert - da mag IPS so beim Update ja nicht.
Hoffe das ist jetzt (erst einmal) erledigt…das fehlende „n“ ist auch korrigiert…:slight_smile:

Joachim

Hi,
gibt es irgendwo eine Erklärung / Anleitung zur Nutzung des IPS2GPIO_BT bzgl. Anwesenheitserkennung? Mich würde interessieren ob es möglich ist, auszuwerten in welchem groben Abstand sich das Bluetooth Gerät befindet, bzw. die Sensibilität des Empfängers einstellen.

Hintergrund:
Ich möchte die Hundeklappe gerne öffnen wenn der Hund davor steht, der Hund soll dazu am Halsband einen Gigaset G-Tag Bluetooth Beacon tragen, da mit RFID die Reichweite zu gering wäre. Nun soll die Klappe öffnen wenn sich der Hund z.B. im Umkreis von 2 oder 3m befindet, aber nicht permanent offen sein, wenn er auf der Terasse 4m weiter oder im Wohnzimmer ein Stockwerk drüber liegt…

Gruß

Hallo Luca,

aus der Erinnerung: Die Funktion die ich in diesem verwende, „pingt“ quasi nur das Gerät auf der genannten MAC an, d.h. es wird keine Verbindung aufgebaut.
Soll eine Verbindung aufgenommen werden, so bedarf es der Genehmigung des Gerätes, dann sind aber auch weitere Daten, m.E. auch die Signalstärke abfragbar.
Letzteres ist aber (aktuell) nicht vorgesehen.

Joachim

Hi,
okay, danke, dann werde ich mal recherchieren, ob sich die Bluetoothleistung des Pi allgemein reduzieren lässt!

Gruß

Ich habe da nochmal eine Frage:

Lässt sich mit dem Modul über die GPIOs ein S0 Zähler bzw. S0 Signal auslesen? Somit müsste ich mir nicht um einen einzigen Zähler auszulesen das IPS 868 System zulegen… Digitale Eingänge gibts ja, aber wird das ganze auch so schnell und zuverlässig an IPS ermittelt, dass man aus den Flanken einen wirklichen Verbrauch errechnen kann?

…für solche und ähnliche Anwendungen versuche ich gerade den PCF8583 (I²C Zähler, optional mit Interrupt) einzubinden, läuft aber aus mir noch nicht erkennbaren Gründen nicht so wie ich es mir wünsche bzw. erforderlich ist.

Ich möchte ganz bewusst nicht die RTC-Funktionalität nutzen, sondern die Counter-Funktion. Der PCF8583 hat diverse tolle Möglichkeiten, mache da aber offenbar noch etwas beim Setzen der Register 0x00 und 0x08 falsch. Wenn mir da einer mal den Schups in die richtige Richtung geben könnte wäre ich da sehr dankbar!:cool:

Joachim

Das hört sich vielversprechend an, dann warte ich mit der Einbindung von Gas- und Wasserzähler noch ab und beobachte die Entwicklung hier! Danke!

Hallo Joachim,

Hab alle bestellt, was ich zum testen des MCP23017 brauch, geht also demnächst los. :smiley:

Swen

Hallo,
Ich habe dein Modul nun auch mal auf meinem Test Raspberry Pi installiert in Verbindung mit einem PCF8574.
Hat soweit auch alles gut geklappt. Kann Eingänge und Ausgänge erfolgreich lesen und schreiben.
Was mir nur dabei aufgefallen ist, dass wenn ich die Ausgänge über iPs ansteuere, es ca. 2 Sekunden dauert, bis die real schalten.
Ist dieses Verhalten normal, oder hab ich bei mir irgendwas noch falsch.
Über die gpios vom Raspberry Pi geht dies wesentlich schneller.

Vielleicht hat jemand ein Tip für mich was ich ändern könnte. Ansonsten muss ich noch sagen, danke für das tolle Modul! [emoji106]

Hallo Hollowman,

grundsätzlich weise ich ja immer wieder darauf hin, dass dieses Modul nicht uneingeschränkt für zeitkritische Anwendungen geeignet ist.
Die von Dir genannten zwei Sekunden erscheinen mir auch sehr lang, hat aber auch viel mit der Hardwarekonstellation zu tun. Was verwendest Du für Hardware? Wie ist diese angebunden (LAN/WLAN)?

Joachim

Hi,
Also das ganze läuft auf einer frischen aktuellen ips Version auf einem Raspberry Pi 2 mit dem normalen Stretch Betriebssystem.
In ips habe ich auch bisher nur dein Modul rein geladen um damit ein wenig rum zu spielen um evtl. Dieses nachher als Heizungssteuerung nutzen zu können.
Am PCF8574 habe ich eine 8 Fach Relais Karte dran. Damit sollen nachher Mischer und Pumpen angesteuert werden, vorausgesetzt das klappt so, wie ich mir das vorstelle.
Wie gesagt wenn per Script alle Relais auf einmal durchschalten will, dann läuft das Skript 14 Sekunden lang und der Raspberry Pi steigt von 4% cpu last auf 60 - 80 %.
Ist die hohe CPU Last nur für das schalten der paar Ausgänge normal??

Das was mich halt stutzig macht ist, dass das Relais definitiv schneller schaltet, wenn es direkt am Gpio vom Raspberry Pi angeschlossen ist.
Ich wollte nachher mal die Lite Version von Stretch installieren und nochmal testen.
Evtl. Hole ich den Raspberry Pi 3 aus dem Keller hoch und teste das mit dem mal ob es dann schneller geht.

Vielleicht kann jemanden andere mal seine Erfahrungen schreiben wie bei ihm die Schaltzeiten sind. Kann ja auch sein, dass irgendwas an meiner config / Zusammenstellung nicht passt.

Gruß
Boris

Nachtrag: der Raspberry Pi ist per lan angebunden.

Hallo Hollowman,

trotzdem etwas zu lang, wobei der Raspberry Pi 2 oder 3 kaum Unterschiede machen wird…
Was könntest du bitte noch mal schauen:

  • ist PIGPIO aktuell
  • sind Auffälligkeit im Debug des PCF8574
  • sind Auffälligkeiten im Debug des Splitters
  • gibt es Einträge bei den Meldungen

Joachim

Hi Joachim,

Sorry für die Späte Antwort.

Ja, ich habe nach dieser Instanz gesucht. diese Existiert nicht.
Es kann durchaus sein, dass dies eine bereits gelöschte Splitter Instanz ist. Hatte bei der ganzen Spielerei, sicher mal die ein oder andere Instanz gelöscht…

Lg

…während mir der PCF8583 immer noch Rätsel aufgibt, konnte ich am Feinstaubsensor SDS011 Fortschritte erzielen…:wink:

Er wird nicht über USB angeschlossen, sondern direkt an die GPIO (5V, GND, zwei GPIO für TxD/RxD). Wie man in den Statusvariablen erkennt, werden viele verschiedene Betriebsweisen angeboten. Aktuell läuft er nur in der einen die angeboten wird, ob die anderen interessant sind sollten wir Bedarf später diskutieren…

Joachim

Wollte wieder kurz was zu meinem Problem schreiben.
Auffälligkeiten in den Debug Meldungen habe ich keine gefunden sowie irgendwelche Meldungen in IPS.
Außer das er jedesmal 1-wire als Schnittstelle anmerkt, da ich diese im Pi nicht aktiviert habe.

Zum testen habe ich nun mal den PI 2 hoch getaktet auf Turbo.
Wenn ich nun alle Ausgänge von 0-7 durchschalte brauch das Skript nur noch 9 Sekunden statt den ursprünglichen 12.
Also ist da schon eine Verbesserung eingetreten. Die cpu last ändert sich im Vergleich zu einem nicht hoch getakteten.
Heute Abend wenn es klappt teste ich das ganze noch mit einem PI3.
Wundert mich nur, dass da der PI2 mit sonst nichts dran Bzw arbeitende Skripte schon so langsam an seine Grenzen kommt?

…habe hier fast alle Sensoren die ich im Modul habe an einem Raspberry Pi 1 hängen - dann kann nicht das Problem sein…

Schau doch mal in „top“ was da so die CPU-Last nach oben treibt. Ggf. mal PIGPIO über das Splitter-Konfigurationsformular neu starten. Was allerdings andersherum passt ist, wenn die CPU-Last so hoch ist, dass es mit den Schaltvorgängen so lange dauert…

Joachim

Hallo Leute,

am späten Sonntag ist es mir dann auch gelungen den PCF8583 zu „bezwingen“…:smiley:
…zumindest was die Grundfunktionalität als Zähler angeht.

Eine Herausforderung bleibt aktuell:
Der PCF8583 bietet eine Option, wonach man einen Wert einstellen kann, bei dem dann der Interrupt ausgelöst wird. Jedoch macht er das nach den jetzigen Einstellungen nur dann, wenn exakt dieser Zählerwert erreicht wird. Ich war davon ausgegangen, dass er das auch bei jedem Vielfachen dieses Wertes macht…

Die Frage die sich stellt ist jedoch: Wie sinnvoll ist diese Optionen eigentlich? Normalerweise würde ich doch den Zählerstand zyklisch abfragen und die Differenz zum vorherigen Wert bilden. Gibt es Anwendungen, wo der Interrupt zu einem bestimmten Wert und/oder seines Vielfachen sinnvoll ist?

Ansonsten schwebt mir folgendes vor:

  1. Ist der Zielwert erreicht wird der Interrupt ausgelöst und der Zähler wieder auf 0 gesetzt
  2. Bei Interrupt wird der Zielwert auf das nächste Vielfache seines Grundwertes gesetzt
    Habe weder das eine noch das andere ausprobiert ob es umsetzbar ist, gehe aber zunächst einmal davon aus.

Vielleicht - und da hoffe ich auf die Community - ist dieses aber auch durch „richtiges“ setzen des Alarm- und/oder Status-/Control-Registers möglich? Habe ich da etwas übersehen?

Joachim

Hallo Joachim,

klingt vielversprechend. Dann habe ich ja bald eine weitere Alternative einen Wasser-, Öl- oder Stromzähler einzubinden.

In einem vorherigen Post hast du ja geschrieben, dass du dich beim PCF8583 hauptsächlich auf die Zählerfunktion und nicht auf die RTC konzentrieren willst. Hast du vor, nach erfolgreicher Zählerfunktion auch die Clock mit einzubauen? Von der Genauigkeit kommt die zwar nicht an die DS3231 ran, aber wenn der 8583 schon mal da ist.

Ein genaue Uhrzeit und Datum kann man in einem Smarthome mit so wenig wie möglich Cloud immer gut gebrauchen. Zeit einfach durch einen NTP-Server im Internet zu setzen ist ja quasi auch ein Cloudservice :wink:

Gruss
Bernd

…hatte ich eigentlich nicht vorgesehen, aber vielleicht kannst Du mich ja überzeugen?[emoji6]
Der Raspberry wird doch im Netz hängen um zum IPS eine Verbindung aufbauen zu können. Dein IPS hängt doch im WAN um auch von außen zugänglich zu sein. Trotzdem würdest Du die Zeit lieber von dem PCF8583 (oder dem DS3231 den ich im GeCoS-Modul schon programmiert habe) nehmen?

Warum?

Joachim