Ankündigung

Einklappen
Keine Ankündigung bisher.

Logic und Howto für 433Mhz Steckdosen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • RoyalTS
    antwortet
    Hajo... stimmt
    Geändert!

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Zitat von RoyalTS Beitrag anzeigen
    Ok... alles zurück
    Hab Hand Steckdosen.py-Logik genommen und es geht. War auch hier irgendwas.

    Danke!
    soll vermutlich "Hab Hans Steckdosen.py-Logik genommen und es geht." heißen!?

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Ok... alles zurück
    Hab Hans Steckdosen.py-Logik genommen und es geht. War auch hier irgendwas.

    Danke!
    Zuletzt geändert von RoyalTS; 29.03.2016, 10:12.

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hmm... Hi zusammen!

    Hab auch mal alles versucht. Via Konsole kann ich mit "send" wunderbar die Funksteckdosen an und aus schalten. Auch nach einem Neustart geht alles.
    Einfach mit
    Code:
     ./send 10101 1 1
    und gut.

    Für smarthome.py sind die Items und Logiken auch alle angelegt. Im Log kommt auch schön eine Reaktion, wenn ich einen Schalter betätige:
    Code:
    2016-03-04 14:38:59,372 INFO     steckdose    Funksteckdosenlogik gestartet -- funksteckdosen.py:<module>:2
    2016-03-04 14:38:59,962 INFO     steckdose    ['sending systemCode[10101] unitCode[1] command[1]\n'] -- funksteckdosen.py:<module>:10
    Aber es tut sich nichts an der Funksteckdose. Wo könnte hier denn noch der Wurm stecken?

    Das Startskript für GPIO hab ich von Manuel oben dankend übernommen.

    Danke und Grüße
    Thorsten
    Zuletzt geändert von RoyalTS; 04.03.2016, 14:47.

    Einen Kommentar schreiben:


  • hhhc
    antwortet
    Hab das jetzt auch mal bei mir für einige Gartensteckdosen eingebaut und es hat super geklappt. Dank externer Antenne liegt der ganze Rasperry aufgeräumt im Serverschrank und die Antenne funkt draussen. Vielen Dank!
    You do not have permission to view this gallery.
    This gallery has 2 photos.

    Einen Kommentar schreiben:


  • sweber1981
    antwortet
    Ich habe die "items/steckdosen.conf" auf ein Minimum reduziert. So läuft es bei mir.

    Code:
    [Funksteckdosen]    
        [[System1]]  
            name = Funksteckdosen
             [[[TasteA]]]
                type = bool
                name = Steckdose1
                visu_acl = rw
                systemcode = 11111
                geraetecode = 1

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Bei mir läuft es auch auf einem PI 2 B.
    Es ist komisch. Wenn ich in der Datei "/items/fsteckdosen.conf" den Zusatz "enforce_updates = yes" eingebe, funktioniert es nicht richtig.
    Deshalb habe ich es im Moment weggelassen.
    Kann mir das jemand erklären?
    Gruß
    Hans
    Zuletzt geändert von Tontechniker; 17.01.2016, 19:09.

    Einen Kommentar schreiben:


  • sweber1981
    antwortet
    Hallo,

    bei mir lief es erst auch nicht. Habe eine Raspi B+. Habe es jetzt hinbekommen mit dem Code von Hans für die Steckdose.pi und logic.conf. Meine send.cpp sieht noch Original aus. Also so:

    Code:
    int main(int argc, char *argv[]) {
    
        /*
         output PIN is hardcoded for testing purposes
         see https://projects.drogon.net/raspberry-pi/wiringpi/pins/
         for pin mapping of the raspberry pi GPIO connector
         */
        int PIN = 0;
        char* systemCode = argv[1];
        int unitCode = atoi(argv[2]);
        int command  = atoi(argv[3]);
    
        if (wiringPiSetup () == -1) return 1;
            printf("sending systemCode[%s] unitCode[%i] command[%i]\n", systemCode, unitCode, command);
            RCSwitch mySwitch = RCSwitch();
            mySwitch.enableTransmit(PIN);
    Dann habe ich zunächst folgendes ausgeführt:

    Code:
    sudo chown root:root /usr/smarthome/rcswitch-pi/send
    gefolgt von:

    Code:
    sudo chmod u+s /usr/smarthome/rcswitch-pi/send
    Jetzt funktioniert bei mir alles. Auch nach einem Neustart.

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Hallo Manuel,
    vielen Dank! Hab es eingebaut und es funktioniert.
    Gruß
    Hans

    Einen Kommentar schreiben:


  • manu241
    antwortet
    Hallo Hans,

    teste mal bitte folgendes:

    Erstelle das Verzeichnis: "/usr/local/skripte".
    Dort legst du das Skript: "gpio_export.sh" an.
    In diese Datei fügst du folgendes ein:
    Code:
    #!/bin/sh  
    echo "17" > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio17/direction
    chmod 666 /sys/class/gpio/gpio17/value
    chmod 666 /sys/class/gpio/gpio17/direction
    In der etc/rc.local schreibst du vor exit 0 : "/usr/local/skripte/gpio_export.sh&"

    Dann mit putty "sudo chmod +x gpio_export.sh" die Rechte vergeben.

    Dann ein Neustart. Gruß Manuel
    Zuletzt geändert von manu241; 17.01.2016, 13:16.

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Hallo,
    dieser Beitrag ergänzt den Beitrag #1!
    Ich habe meine Funksteckdosen ("arendo" (vermutlich baugleich mit Brennstuhl) aus der Bucht) zum Laufen gebracht.
    Mir hat der Beitrag aus der Zeitschrift CT 2/2016 (Querfunker, S. 102) geholfen. Mit einem zweiten Pi habe ich mit einem 433Mhz-Empfänger (zusammen mit dem 433Mhz Sender gekauft) die Daten-Telegramme analysiert.
    Als Beispiel hier meine Dateien
    /items/fsteckdosen.conf
    Code:
    [Funksteckdosen]    
        [[System1]]    
             [[[TasteA]]]
                type = bool
                name = 1A
                visu_acl = rw
                knx_dpt = 1
                sqlite = yes
                sim = track
                systemcode = 10000
                geraetecode = 1
                knx_send = 10/0/0
                knx_cache = 10/0/0
                [[[[uzsu]]]]
                    type = dict
                    uzsu_item = Funksteckdosen.System1.TasteA
                    cache = True
                    visu_acl = rw
             [[[TasteB]]]
                type = bool
                name = 1B
                visu_acl = rw
                knx_dpt = 1
                sqlite = yes
                sim = track
                systemcode = 10000
                geraetecode = 2
                knx_send = 10/0/1
                knx_cache = 10/0/1
                [[[[uzsu]]]]
                    type = dict
                    uzsu_item = Funksteckdosen.System1.TasteB
                    cache = True
                    visu_acl = rw
             [[[TasteC]]]
                name = 1C
                type = bool
                visu_acl = rw
                knx_dpt = 1
                sqlite = yes
                sim = track
                systemcode = 10000
                geraetecode = 3
                knx_send = 10/0/2
                knx_cache = 10/0/2
                [[[[uzsu]]]]
                    type = dict
                    uzsu_item = Funksteckdosen.System1.TasteC
                    cache = True
                    visu_acl = rw
    Und hier die datei
    /logics/steckdose.pi
    Ich habe auf ein Mehrfach-Senden verzichte, da das schon der Befehl "send" in rcswitch-pi erledigt.
    Code:
    #!/usr/bin/env python
    logger.info("Steckdosenlogik gestartet")
    import os
    if trigger['value'] is not None:
        source_item = sh.return_item(trigger['source'])
        output = os.popen("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value']== True ))).readlines()
    logger.info(output)
    Als nächstes die
    /etc/logic.conf
    Code:
    [hello]
        filename = hello.py
        crontab = init
    
    [dummy]
        filename = dummy_series.py
        cycle = 300
    
    [steckdose]
        filename = steckdose.py
        watch_item = Funksteckdosen.System1.TasteA | Funksteckdosen.System1.TasteB | Funksteckdosen.System1.TasteC
    Der HTML-Code als Beispiel mit eingebauter UZSU für alle Kanäle
    Code:
    /**
    * -----------------------------------------------------------------------------
    * @package     smartVISU
    * @author      Martin Gleiß
    * @copyright   2012
    * @license     GPL [http://www.gnu.de]
    * -----------------------------------------------------------------------------
    */
    
    {% import "widget_uzsu.html" as uzsu %}
    {% block content %}
    
        <div class="block">
            <div class="set-1" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
    
                <div data-role="collapsible" data-collapsed="false">
                    <h3>Funksteckdosen</h3>
                    Taste A{{ basic.switch ('Funk1A' ,  'Funksteckdosen.System1.TasteA' , icon1~'it_remote.png' , icon0~'it_remote.png' ) }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
                              {{ uzsu.uzsu_icon ('Funk_1A' , 'Funksteckdosen.System1.TasteA.uzsu', 'Schaltuhr Funksteckdose 1A', '0', '', '', 'bool', ['ein', 'aus']) }}<BR>
                    Taste B{{ basic.switch ('Funk1B' ,  'Funksteckdosen.System1.TasteB' , icon1~'it_remote.png' , icon0~'it_remote.png' ) }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
                              {{ uzsu.uzsu_icon ('Funk_1B' , 'Funksteckdosen.System1.TasteB.uzsu', 'Schaltuhr Funksteckdose 1B', '0', '', '', 'bool', ['ein', 'aus']) }}<BR>
                    Taste C{{ basic.switch ('Funk1C' ,  'Funksteckdosen.System1.TasteC' , icon1~'it_remote.png' , icon0~'it_remote.png' ) }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
                              {{ uzsu.uzsu_icon ('Funk_1C' , 'Funksteckdosen.System1.TasteC.uzsu', 'Schaltuhr Funksteckdose 1C', '0', '', '', 'bool', ['ein', 'aus']) }}<BR>
                </div>
            </div>
        </div>
    {% endblock %}
    Ein Problem habe ich noch. Nach reboot muß ich den Befehl "gpio export 17 out" mit Putty eingeben um den Port zuzuordnen. Vielleicht kann mir dazu noch jemand einen Tipp geben, wie ich die Rechte richtig einstelle?
    Gruß
    Hans
    Zuletzt geändert von Tontechniker; 29.03.2016, 10:01. Grund: Schreibfehler!

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Hi,
    ist die Syntax nicht "logger.info"? "loggen.inf" bringt Fehlermeldung.
    Wie und wo finde ich das Ergebnis von "logger.info"? (Ich muß noch einiges lernen!)
    Gruß
    Hans

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    baue doch mal loggen.info("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value'] == True ))) in die Logic. Was kommt den dabei raus?
    Bitte poste Code innerhalb der Code-Tags (findet sich in der erweiterten Einstellung hinter dem '#')
    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Leider funktionieren meine Funksteckdosen immer noch nicht. Es liegt vermutlich an der Datei /smarthome.pi/logics/steckdose.py.
    Alle anderen Dateien sind so wie im Beitrag #1 eingegeben.

    #!/usr/bin/env python
    logger.info("Steckdosenlogik gestartet")
    import os
    if trigger['value'] is not None:
    source_item = sh.return_item(trigger['source'])
    os.popen("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value'] == True )))
    os.popen("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value'] == True )))
    os.popen("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value'] == True )))
    output = os.popen("/usr/smarthome/rcswitch-pi/send "+ source_item.conf['systemcode'] +" "+ source_item.conf['geraetecode'] +" "+ str(int(trigger['value'] == True ))).readlines()
    logger.info("Output")


    Vermutlich werden die Werte für die im oberen Code verwendeten Variablen nicht richtig ermittelt oder es fehlt noch etwas in der Zusammenstellung des Telegramms. Ich kann in einem Funkkopfhörer auf der Frequenz beim Auslösen das Daten-Telegramm hören, die entsprechende Steckdose schaltet aber leider nicht.
    Ich habe die Datei /smarthome.pi/logics/steckdose.py mal so mit festen Werten verändert, dass ich jetzt eine Steckdose einschalten kann.

    #!/usr/bin/env python
    logger.info("Steckdosenlogik gestartet")
    import os
    if trigger['value'] is not None:
    os.popen("/usr/smarthome/rcswitch-pi/send 11111 1 1")
    logger.info("Output Ein")


    Vielleicht kann sich ja mal jemand den Code ansehen (kann leider kein Python) oder mir sagen, was ich falsch mache?
    Gruß Hans

    Einen Kommentar schreiben:


  • Tontechniker
    antwortet
    Hi Carsten,
    habe alles wie in Deinem Beispiel #1 eingerichtet. Leider funktioniert das Senden nicht richtig. Ich höre mit einem Funkkopfhörer die Telegramme beim Auslösen. Etwas im Telegramm muß falsch sein - die Steckdosen schalten nicht.
    Wenn ich mit putty z.B. den Befehl
    /usr/smarthome/rcswitch-pi/send 10000 1 1
    oder
    /usr/smarthome/rcswitch-pi/send 10000 1 0
    ausführe schalten die Steckdosen ohne Probleme.
    Was mache ich falsch?
    Gruß Hans

    Einen Kommentar schreiben:

Lädt...
X