Seite 1 von 1

CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Mittwoch 26. Oktober 2016, 17:10
von Ulumulu
Kurzvorstellung:
Hallo zusammen,
ich heiße Benedikt, bin Verfahrenstechnik-Ingenieur und interessiere mich hobbymäßig für Elektronik-Basteleien und Automation. Ich selbst habe bisher leider noch kein eigenes Bier gebraut. Mein Vater braut jedoch ganz leckres Bier, und das bisher "von Hand". Sein Wunsch ist eine Brausteuerung für das Maischekochen. Da die fertig beziehbaren Lösungen jedoch äußerst kostspielig sind, dachte ich, "Das geht doch auch selbstgemacht!". Nachdem ich mich zunächst selbst an die Programmierung gewagt habe, hab ich nun mit CraftBeerPi eine bereits fortgeschrittenere und optisch ansprechendere Lösung gefunden. Die nutze ich natürlich gerne! Vielen Dank an dieser Stelle an Manuel! :thumbsup
Da das Projekt low-budget sein sollte, aber ich den 3,50€-32A-china-SSRelais nicht 100% über den Weg traue, fehlte mir noch die Möglichkeit, meine Funksteckdosen in CBP einzubinden.

Hintergund
Die Ansteuerung des Rührwerks und des Heizinstruments wird bis CraftBeerPi V2.1 üblicherweise mittels Relais realisiert, die direkt mit dem Raspberry verdrahtet werden.
Das Hantieren mit 230V-Spannungen birgt jedoch immer ein gewisses Risiko und setzt entsprechende Fachkundigkeit voraus. Hochwertige Relais kosten auch schnell über 10€ das Stück und müssen je nach Bauart zusätzlich gekühlt werden.
Dieses Thema kann jedoch komplett umgangen werden, wenn drahtlos steuerbare Steckdosen verwendet werden, z.B. WLAN- oder Funk-Steckdosen.
Zum Thema WLAN-Steckdosen hat Gottfried bereits eine saubere Anleitung veröffentlicht. Diese WLAN-Steuerungsmöglichkeit der Steckdosen soll laut in V2.2 sogar direkt implementiert sein.

Hier möchte ich nun erläutern, wie man die Steuerung mittels FUNKsteckdosen realisieren kann. Dabei bediene ich mich ganz dreist an Teilen aus Gottfrieds WLAN-Steckdosen-Anleitung, der damit auch die entscheidende Idee geliefert hat! Vielen Dank! :Drink

Die Ansteuerung per Funk hat diverse Vorteile, z.B.:
- wenig Bastelei (5 Jumperkabel verbinden)
- günstige Lösung (vor allem, wenn man noch ein paar alte Funkdosen rumliegen hat ;))
- einfache Konfiguration (Steckdosencode anpassen)
(- keine Abhängigkeit von WLAN-Existenz/-Empfang)

Dabei gilt weiterhin:
- Unabhängig von CBP-Versionsänderung
- Minimale Programmierkentnisse erforderlich (Copy+Paste).

Wie funktionierts?
Kurz gesagt: Die durch CBP ausgelöste Zustandsänderung der GPIOs wird durch ein kleines Pythonprogramm erfasst und der entsprechende Befehl per Funk ausgesendet.

Einkaufsliste
  • 1-x Stück 433-MHz-Funksteckdosen je nach Bedarf (z.B. 2 Stück, für Heizung und Rührer), deren Code über DIP-Schalter einstellbar ist. Ca. 5-15 €/Stück.
    Achtung: Bei vielen modernen "selbstanlernenden" Funksteckdosen ist der Code nicht einfach manuell über DIP-Schalter einstellbar, sondern muss erst umständlich ausgelesen werden, um ihn anschließend mit dem Raspberry versenden zu können. Wie das geht wird in dieser Anleitung jedoch nicht behandelt, daher siehe google ;)
    Achtung: Auf die maximale Ausgangsleistung achten und passend zum angeschlossenen Gerät auswählen! Die meisten gehen nur bis 1000W schalten (4,3 A)! Es gibt aber z.B. auch Modelle bis 3680W (16A)
  • 1 Stück 433-MHz-Sender Typ "FS1000A", ca. 1-2 € (meist in Kombinaiton mit zusätzlichem Empfangsmodul erhältlich, z.B. hier, 5 Paar für 4,10€)
  • 5 Stück Jumperkabel female-female. Cent-Artikel
Insgesamt muss man also mindestens ca. 45-60 € in die Hand nehmen. Ist der Raspberry schon vorhanden und es liegt irgendwo eine alte Funksteckdose rum, kann man mit weniger als 5€ auskommen.

Was wird noch benötigt?
- Anschließen des Funksenders an den Raspberry
- Installation von wiringPi und raspberry-remote zum Senden der Funkbefehle
- Erstellen einer Python-Datei, die die GPIOs "abhört" und die Steckdose(n) steuert.


LOS GEHT'S!

Schritt 1: Anschließen des Funksenders, Installation von wiringPi und raspberry-remote
Eine super Anleitung dazu gibt es hier, da muss ich das Rad garnicht erst neu erfinden.

Hinweis: Nach Installation nach obiger Anleitung wird standardmäßig GPIO17/PIN11 für den Funksender genutzt. In CBP sollten demnach andere GPIOS gewählt werde, was in den Kettle-Settings ja sehr einfach durchzuführen ist. Alternativ kann auch der raspberry-remote-Standard bei Bedarf angepasst werden durch einen Eintrag in der init-Datei (Anleitung ergoogelbar ;) ).

An dieser Stelle am besten direkt testen, ob die eigene Steckdose auch geschalten wird. Dazu Steckdose einstecken und "sudo /home/pi/raspberry-remote/send [familycode] [steckdosennummer] [1 für "AN" oder 0 für "AUS"]" ausführen
Hinweis: Die Reichweite hängt ab von der verwendeten Steckdose und vom Sender. An der Steckdose selbst kann man meist nichts mehr verbessern, an den Sender kann man jedoch noch eine 17,3cm lange Antenne anlöten. Ohne Antenne reicht die Reichweite bei mir ca. 4-10m, je nach Beschaffenheit auch durch Wände.

Schritt 2: Anschließen der Jumper-Kabelbrücken
Beim Raspberry müssen nun im ausgeschaltenen Zustand die von CBP angesteuerten GPIO-PINs mit noch nicht belegten GPIO-PINS verbunden werden. Z.B.:
Einstellung CBP:
Heizung = GPIO24
Rührwerk = GPIO 23

Jumper:
GPIO24 --> GPIO22 (="Lauschpin". 22 "lauscht" was 24 macht.)
GPIO23 --> GPIO18

Schritt 3: Python Datei erstellen

Auf dem Raspberry nun eine neue Datei erstellen und als "funkdose.py" benennen.
(Wer mit grafischer Oberfläche arbeitet z.B. direkt auf dem Desktop über "rechte maustaste"-->"neu"-->"leere Datei". Der Pfad lautet dann "/home/pi/Desktop/funkdose.py"
Ansonsten über z.B. "sudo nano /home/pi/Desktop/funkdose.py")

In diese Datei nun folgenden Code kopieren:

----------------funkdose.py ---------------------------------

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
### funkdose.py      26.10.2016 ###

import RPi.GPIO as GPIO
import os
import time

# GPIO initialisieren
GPIO.setmode(GPIO.BOARD)
###
### Wenn z.B. Heizung in CBP auf Pin 18 angesteuert wird --> Pin 18 mit Pin 15 verbinden (Jumper).
### Pin 15 ist nun der "Lauschpin" für die Heizung.
###

#Einstellungen
name1 = "Ruehrer"  #Name des "belauschten" Aggregats
lauschpin1 = 12     #PIN-Nummer, auf der gelauscht wird (hier: ="GPIO 18")
code1 = "10000 1"   #In Dose eingestellter Family- und Dosen-Code
name2 = "Heizung"
lauschpin2 = 15     # ="GPIO 22". 
code2 = "10000 3"

GPIO.setup(lauschpin1, GPIO.IN)
GPIO.setup(lauschpin2, GPIO.IN)

# Interrupt-Service-Funktion fuer beide Flanken
def measure(callback):
  if callback == lauschpin1: #Aggregatname und Funkcode festlegen
    ziel = name1
    code = code1
  else:
    ziel = name2
    code = code2
    
  if GPIO.input(callback) == 0:
    print (ziel + " wird ausgeschaltet!")
    os.system("sudo /home/pi/raspberry-remote/send "+code+" 0") #ziel ausschalten
  else:
    print (ziel + " wird eingeschaltet!")
    os.system("sudo /home/pi/raspberry-remote/send "+code+" 1") #ziel anschalten

# Interrupt fuer beide Flanken aktivieren
GPIO.add_event_detect(lauschpin1, GPIO.BOTH, callback=measure)
GPIO.add_event_detect(lauschpin2, GPIO.BOTH, callback=measure)

while 1:
# rumdümpeln
    time.sleep(1)
In diesem Beispiel sind 2 Steckdosen realisiert. Die Namen der verwendeten Aggregate sowie die Pinbelegung einfach an den eigenen Bedarf anpassen!

Speichern mit STRG+O
Schließen mit STRG+X

Schritt 4: Datei beim Booten starten
Um die funkdose.py nach einem Neustart nicht immer manuell starten zu müssen, kann sie beim Booten automatisch gestartet werden.
Dazu im Terminal
sudo nano /etc/rc.local ausführen und vor exit 0 folgendes eintragen:python /home/pi/Desktop/funkdose.py. Anschließend speichern und schließen.


Das wars! Das Brauen kann losgehen!

Viel Spaß!

Benedikt

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Mittwoch 26. Oktober 2016, 17:16
von Krappi
Hi Benedikt,

danke für die Anleitung. Ergänzen möchte ich, dass beim Kauf der Steckdosen auf die maximale Leistung geachtet werden sollte.
Viele Modelle können nur Verbraucher bis 1000 oder 2300 Watt schalten. Steckdosen die z.B. 16A und damit die notwendigen 3500W (exakterweise 3680W) für z.B. die Hendi erlauben
sind nicht völlig exotisch aber auch nicht immer auf den ersten Klick zu finden.

Viele Grüße,
Stephan

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Donnerstag 27. Oktober 2016, 13:16
von Ulumulu
Danke für deinen Hinweis, ich hab das eben mit aufgenommen :thumbup

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Freitag 28. Oktober 2016, 13:05
von kabelbrand
Hi Benedikt,

genial :thumbup Genau das hat mir noch als Entscheidungshilfe gefehlt, mich mit dem Raspi zu beschäftigen. Werde ich jetzt am WE
mal testen, freu mich schon :Smile

Grüße
Markus

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Donnerstag 3. November 2016, 10:12
von kabelbrand
Hi Benedikt,

ich bin nun einen Schritt weiter und habe deiner Anleitung nach alles umgesetzt. Was ich jetzt noch nicht verstehe: wie sende ich meinen Steckdosencode?
Ich habe keine DIPs, sondern meinen Code ausgelesen. Genügt es, den Code hier

code1 = "10000 1" #In Dose eingestellter Family- und Dosen-Code

auszutauschen gegen

code1 = "111100101010010001011111" #In Dose eingestellter Family- und Dosen-Code


Mein Problem dabei ist, dass das Senden mit ./send diese Art Codierung nicht erlaubt. Sicher sitzt das Problem vor dem PC, aber aktuell stehe ich da auf dem Schlauch.
Hast du noch einen Tipp für mich? Mit was kann ich die Funktion auf dem Raspi testen, bevor ich den Code in das Script einbaue?

Grüße
Markus

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Montag 7. November 2016, 13:56
von Ulumulu
Hallo Markus,

wie bereits oben beschrieben ist diese Anleitung nur für Dosen mit Dip-Schaltern, da diese extrem leicht zu konfigurieren sind (kein Code-Sniffen notwendig).

Für die modernen "selbstlernenden" Dosen gibt es jedoch trotzdem eine Lösung, jedoch nicht mit raspberry-remote sondern mit "pilight".

Schau dir mal diesen Artikel an, damit sollte das funktionieren. Du musst halt, sobald das mit dem Senden über pilight funktioniert, die entsprechenden alten "./send" Befehle im obigen Code mit dem entsprechenden pilightbefehl ersetzen.

Gruß,
Benedikt

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Dienstag 8. November 2016, 21:11
von Barrefreund
Hallo Benedikt,
ich habe wiringpi und raspberry-remote installiert. Kann jetzt auch die Steckdosen per Befehl schalten.
Die Kabelbrücken habe ich wie in deinem Beispiel gesteckt, und die Datei funkdose.py erstellt und den code hineinkopiert. In Craftbeerpi die GPIO 23 und 24 für Heizung und Rührer eingestellt.
Den automatischen start der funkdose.py habe ich auch eingetragen.
Leider schalten die Steckdosen nicht.

Muss in dem Code der funkdose.py noch etwas geändert oder eingetragen werden wenn man die gleichen GPIO`s wie in deinem Beispiel nimmt?

Bin für jede Hilfe dankbar

Grüße Wolf

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Samstag 12. November 2016, 20:01
von Ulumulu
Hallo Wolf,

Falls deine funkdose.py-Datei nicht im Home Verzeichnis liegt brauchst du besondere Rechte zum ausführen (kann man mit chmod zuweisen, genauen Befehl kann man schnell googlen ). Alternativ die Datei ins Homeverzeichnis stecken wie im Beispiel oben (Pfad in der rc.local anpassen )

Evtl. Ist auch was mit den gpio Verbindungen nicht korrekt, da gibt's öfters mal Verwirrungen wegen Pin-Nr und Gpio-Nr.
Schreib Grad vom Handy daher leider nicht ausführlicher ;)

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Montag 21. November 2016, 10:20
von Barrefreund
Hallo Benedikt,

danke für die Anleitung und Hilfe. Habe es am Wochenende zum laufen bekommen. Bei mir lag es daran dass CBP automatisch gestartet wurde.
Mann musste dann die Funkdose.py manuell ausführen. Beim booten ohne Autostart von CBP wurde sie automatisch ausgeführt.

Nochmals Danke
Wolf

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Mittwoch 15. März 2017, 01:21
von Bjmang
Hallo,
ebenfalls danke für die Anleitung und den tollen Skript.
Klappt supper mit den zwei Steckdosen. :thumbup

Hab gerade versucht die Nachgusssteckdose einzubinden.
Ahnungslos per Copy and Paste aber da fehlt noch etwas,
kann das jemand ergänzen? (Der den Durchblick hat)

Schätze nach dieser Zeile fehlt ihrgendwo was
# Interrupt-Service-Funktion fuer beide Flanken
def measure(callback):

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
### funkdose.py      26.10.2016 ###
    
import RPi.GPIO as GPIO
import os
import time

# GPIO initialisieren
GPIO.setmode(GPIO.BOARD)
###
### Wenn z.B. Heizung in CBP auf Pin 31 (GPIO 6) angesteuert wird --> Pin 31 mit Pin 15 verbinden (Jumper).
### Pin 15 (gpio 22) ist nun der "Lauschpin" für die Heizung.
###

#Einstellungen
name1 = "Ruehrer"  #Name des "belauschten" Aggregats
lauschpin1 = 12    #PIN-Nummer, auf der gelauscht wird (hier: ="GPIO 18")
code1 = "10011 3"   #In Dose eingestellter Family- und Dosen-Code
name2 = "Heizung"
lauschpin2 = 15     #="GPIO 22".
code2 = "10011 4"
name3 = "Nachguss"
lauschpin3 = 18     #="GPIO 24".
code3 = "10011 2"

GPIO.setup(lauschpin1, GPIO.IN)
GPIO.setup(lauschpin2, GPIO.IN)
GPIO.setup(lauschpin3, GPIO.IN)

# Interrupt-Service-Funktion fuer beide Flanken
def measure(callback):
  if callback == lauschpin1: #Aggregatname und Funkcode festlegen
    ziel = name1
    code = code1
  else:
    ziel = name2
    code = code2
       
  if GPIO.input(callback) == 0:
    print (ziel + " wird ausgeschaltet!")
    os.system("sudo /home/pi/raspberry-remote/send "+code+" 0") #ziel ausschalten
  else:
    print (ziel + " wird eingeschaltet!")
    os.system("sudo /home/pi/raspberry-remote/send "+code+" 1") #ziel anschalten

# Interrupt fuer beide Flanken aktivieren
GPIO.add_event_detect(lauschpin1, GPIO.BOTH, callback=measure)
GPIO.add_event_detect(lauschpin2, GPIO.BOTH, callback=measure)
GPIO.add_event_detect(lauschpin3, GPIO.BOTH, callback=measure)

while 1:
# rumdümpeln
    time.sleep(1)

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Sonntag 19. März 2017, 17:30
von Bjmang
PS.:
Was mir aufgefallen ist beim kopieren des Code`s in die selbsternannte funkdose.py Datei musste ich jedesmal die Leerzeichen anpassen damit der Code ausgeführt wird.
Bei mir musste ich dann einfach in jede Reihe vor den Text und zweimal Entfernen drücken.
Vieleicht hilfts jemand.
Gruß Björn

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Montag 8. Mai 2017, 10:11
von maestrone
Hallo zusammen

Mein erster Post hier und eine Vorstellung von mir:
Ich wohne in der Region Zürich und braue Bier in der Einocherliga; gehe bald gegen die fünfzig...

Craftbeerpi ist eine grandiose Sache, danke Manuel für die Entwicklung!

In unserem Haus ist ziemlich alles mit Homematic automatisiert, deshalb sind viele geschaltete Steckdosen verfügbar. Ich möchte nun die bereits bestehende Infrastruktur in die Software integrieren. Homematic hat eine XML-API die es erlaubt, Aktoren direkt anzusprechen; mit diesem Befehl (http://homematic-IP/config/xmlapi/state ... ew_value=1) lässt sich ein Schalter einschalten. Das ausschalten erfolgt mit einem "0" am Ende.

Süss hierbei ist, dass die Gartenbewässerung (Gardena/Magnetventil) sich für die Kühlung und die Türklingel für den Buzzer zweckentfremden lassen würde.

Gestern habe ich versucht den hier gelistete Code und auch Manuels wifisocket.py auf verschiedene Arten für meine Bedürfnisse anzupassen - ohne Erfolg.
Kann mir jemand Unterstützung bieten?

Grüsse aus der Schweiz

Stefan

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Dienstag 5. September 2017, 00:48
von cutmeat
Hallihallo Benedikt,

ich habe nach einigem Rumprobieren nun meine selbstlernenden "Arendo"-Funksteckdosen OHNE Dip-Schalter in CraftBeerPi integrieren können. Dazu habe ich pilight konfiguriert und deinen Python-Script folgendermaßen modifiziert:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
### funkdose.py      4.9.2017 ###

import RPi.GPIO as GPIO
import os
import time

# GPIO initialisieren
GPIO.setmode(GPIO.BOARD)

#Einstellungen
name1 = "Heizung"  #Name des "belauschten" Aggregats
lauschpin1 = 21     #Physischer Lauschpin für die Heizung, 21 lauscht auf 22
id1 = 1             # ID des Steckers in pilight
#code1 = "10000 1"   #In Dose eingestellter Family- und Dosen-Code
name2 = "Kühlung"
lauschpin2 = 23     #Physischer Lauschpin für die Heizung, 23 lauscht auf 24
id2 = 2             # ID des Steckers in pilight
#code2 = "10000 3"

GPIO.setup(lauschpin1, GPIO.IN)
GPIO.setup(lauschpin2, GPIO.IN)

# Interrupt-Service-Funktion fuer beide Flanken
def measure(callback):
  if callback == lauschpin1: #Aggregatname und Funkcode festlegen
    ziel = name1
    schalterid = id1
  else:
    ziel = name2
    schalterid = id2

  if GPIO.input(callback) == 0:
    print (ziel + " wird ausgeschaltet!")
    os.system("sudo pilight-send -p kaku_switch_old -u 0 -i %s -f" % (schalterid)) #ziel ausschalten
    print("sudo pilight-send -p kaku_switch_old -u 0 -i %s -f" % (schalterid))
  else:
    print (ziel + " wird eingeschaltet!")
    os.system("sudo pilight-send -p kaku_switch_old -u 0 -i %s -t" % (schalterid)) #ziel ausschalten

# Interrupt fuer beide Flanken aktivieren - Python wartet auf ein PullUp oder PullDown auf den beiden Pins.
GPIO.add_event_detect(lauschpin1, GPIO.BOTH, callback=measure)
GPIO.add_event_detect(lauschpin2, GPIO.BOTH, callback=measure)

while 1:
# rumdümpeln
    time.sleep(1)

Das zeitaufwändigste war natürlich, das Protokoll meiner Dosen rauszukriegen, das hat im Endeffekt nicht durch "Sniffen", also durch Abhören der beiliegenden Funkfernbedienung, funktioniert, sondern durch Gegoogel. Ich habe jemanden gefunden, der die gleichen Dosen unter dem Namen "Eurodomest" mit dem pilight-Protokoll "kaku_switch_old" betreibt unter https://arduinodiy.wordpress.com/2014/0 ... r-arduino/. Ich habe die Dosen dann mit pilight-send angelernt und ihnen die unit "0" und die id "1", "2" und "3" zugeteilt... Der Code ist jetzt noch nicht auf 3 Dosen angepasst, da seh' ich aber kein Problem.
Ich hab dann noch kurz gebraucht, um zu verstehen dass die GPIO-Pin-Nummern nicht die gleichen wie die Hardware-Pins sind, eine Pinbelegung zur "Umrechnung" findet man hier: https://pinout.xyz/pinout/wiringpi#

Vorher dann in CBP auf "Heizen" geklickt, und als das rote Licht an der Dose anklackte erstmal im Zimmer rumgesprungen :D

Danke für den Kickstart!

LG,

Johannes

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Donnerstag 18. Januar 2018, 00:13
von schumsung
Guten Tag Zusammen

Besten Dank im voraus für dieses hoch interessante Projekt.
Ich bin absoluter Rookie was das Programmieren und Foren betrifft. Vielleicht könnt Ihr mir bei meinem Anliegen ja helfen...

Ich habe folgende Funksteckdosen und kriege die einfach nicht zum laufen...


https://www.conrad.ch/de/funk-steckdose ... 18288.html

Diese sind kostengünstig und machen bis 2000w mithalten (was der Hauptgrund war für meine Wahl)
Durch googeln bin ich nicht viel schlauer geworden.

Ist dies überhaupt möglich diese Steckdosen anzusteuern..wen JA... Bitte ich um Hilfe

Besten Dank im voraus Grüsse und hoffentlich bis bald
Thomas

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Samstag 24. November 2018, 22:46
von Doctor_B
maestrone hat geschrieben: Montag 8. Mai 2017, 10:11 In unserem Haus ist ziemlich alles mit Homematic automatisiert...
So sieht es bei mir auch aus und ich habe noch eine Handvoll Osram-Lightify-Steckdosen herumliegen.
Hast Du mittlerweile eine Lösung?

Re: CraftBeerPi - Tutorial Funksteckdose anschließen

Verfasst: Donnerstag 15. Juli 2021, 10:49
von themrkletter
vielen Dank für die übersichtliche Anleitung! Hat mir für den Start sehr viel weitergeholfen.
hat schon jemand Erfahrungen damit gemacht, eine Funksteckdose (idealerweise mit pilight) in CBPI 4.0 einzubinden? geht das genauso?