Für meine Wassersteuerung habe ich folgende Anforderungen:
-
Der Wasserhahn hat einen Mikroschalter. Solange der geschlossen ist soll die Pumpe laufen.
-
In der Dusche gibt es einen Taster. Wenn der einmal (kurz) gedrückt ist, soll die Pumpe laufen. Ein weiteres Mal kurz drücken schaltet die Pumpe wieder aus. Nach 5 Minuten schaltet die Pumpe auf jeden Fall wieder aus, ausser wenn der Wasserhahn (Punkt 1) im Betrieb ist.
Verkabelung habe ich wie folgt angedacht:
Bei der Programmierung in Node Red stehe ich auf dem Schlauch. Welchen Event muss ich in den Flow reinziehen, um bei Betätigung eines Schalters einen Event zu generieren? Ich würde am liebsten einen eigenen Flow programmieren, weil mir das einfach Spass macht.
Gruss Matthias
Ich beantworte hier meine Frage selber, vielleicht hat jemand später ja das gleiche Problem.
Die Verkabelung konnte ich so umgesetzt wie ich es in der Skizze dargestellt habe, das funktioniert. Um in einem Node Red Flow auf den Schalter zu reagieren, habe ich einen mcp23017input Node verwendet.
ACHTUNG Bei der Konfiguration des mcp23017input muss man eine BitNumber eingeben. Hier muss 0 eingegeben werden, wenn man den Schalter an den Pin1 angeschlossen hat.
Nun kann man alles machen was das Herz begehrt, zum Beispiel ein Relais schalten und nach einer gewissen Pause wieder ausschalten.
@maettel Du musst nur aufpassen, dass du keine zwei MCPinputs benutzt die auf die gleiche Bitnummer zugreifen. Ansonsten ist auf dem Board ein MCP23017 mit 16 Adressen. Bei uns sind 0-7 für Inputs deklariert und 8-15 als Outputs.
Bei deinem Vorhaben hast du zwei Inputsignale die jeweils das gleiche Relay steuern, dann musst du nur noch überprüfen, wie das Relay aktuell geschaltet ist und dann entsprechend umschalten oder eben nicht. Benötigst du noch Hilfe dabei, oder bist du schon fertig?
Hallo Vincent
Ich dachte, ich hätte die Lösung gefunden, aber jetzt machst du mich grad etwas unsicher. 
Ist es korrekt, dass die Bitnummern, die ich in Node Red eingebe, “hart” an die nach aussen im Stecker, der mit Input bezeichnet ist, verfügbaren Pins gemappt sind?
- Bit Number 0 von Chip 0x20 entspricht Pin 1,
- Bit Number 1 von Chip 0x20 entspricht Pin 2
- usw.
Die Tankgeber sind ja auf die nach aussen geführten Inputs gemappt, und da ich 2 bis 3 Tanks geplant habe, könnte das ja schon knapp werden.
Ist es korrekt, dass es nur einen einzigen MCP23017 CHip gibt im Van Pi Core? Oder gibt es mehrere (du schreibst “Ansonsten ist auf dem Board ein MCP23017 mit 16 Adressen”)? Wenn es mehrere gibt: Welche Adresse kann ich nehmen? Es stehen mir ja 0x20 bis 0x27 zur Verfügung. Und wo sind die Anschlüsse? Als Lötpunkte auf dem Board?
Also ja, ich glaube ich brauche noch etwas Starthilfe.
LG Matthias
Also die Tankgeber (Anschluss in der Mitte) haben ja erstmal nichts mit den digitalen Inputs (Anschluss ganz rechts) zu tun.
Die digitalen Inputs werden zusammen mit den 8 Relays über den gleichen Chip gesteuert, der hat insgesamt 16 Anschlüsse, davon wie gesagt 8 für Outputs und 8 für die Inputs.
Bei der Nummerierung der Inputs auf dem Bild hast du auf 5 und 10 GND und dann 1-4 und 6-9 sind die Inputsignale.
Die sind dann wiederum auf dem Chip als Bits nummeriert von 0-7.
Wir benutzen die aber bereits im Flow Relay Controller, also wenn du damit was eigenes machen möchtest solltest du sie dort deaktivieren.
0x20 bis 0x27 sind i2C Adressen, da ist der Chip für die Inputs und Relays auf der 0x20.
Danke, jetzt hab ich es kapiert, manchmal dauert es etwas länger 
Die Eingange werden im Relay Controller gebraucht, weil man die Relays auch durch die Inputs steuern kann. Dazu braucht man nichts zu programmieren, sondern man kann das im UI bequem konfigurieren. Damit kann man einfach einen Input mit einem Relais oder einem Dimmer verbinden.
Da ich aber eine etwas spezielle Vorstellung habe mit einer Verbindung von 2 Schaltern die auf ein einziges Relais wirken, einer davon mit mit zeitlicher Verzögerung, sollte ich darauf achten, dass keine Doppelbelegungen / Konflikte auftreten können. Wenn ich also Input 1 und Input 2 mit einer eigenen Logik verwenden möchte, dann würde ich im Flow Relay Controller folgende Nodes und Verbindungen rauslöschen:
LG Matthias
PS: Ich bin gespannt, was Ihr uns am 3. 4. neues präsentiert!
1 Like
Gut dass du uns auf diese Idee gebracht hast:
Im neuen Update werden die MCP Statusänderungen für die Inputs per MQTT gepusht. Hab da mal zwei Nodes angehangen:
push mqtt function node:
msg.payload = {
"input": msg.mcpinput,
"status": msg.mcpinput_status
}
return msg;
und die MQTT node mit dem localhost verbinden und als Topic pkw/tele/input
setzen.
Jetzt kannst du in einem neuen Flow eine MQTT-In Node benutzen und wenn der Status sich ändert kannst du entsprechend agieren. Damit musst du nicht mehr in den vorgeschriebenen Flows arbeiten, das wird bei einem Update nämlich umständlich 
1 Like