Seite 1 von 1

Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 09:38
von Willhelm
Hallo ich möchte über google talk auf meinem raspbarry pi ein Relay schalten und habe mir volgendes zusammen geschustert habe jedoch noch ein paar probleme z.B in zeile 60 kommt

File "raspiBot.py", line 60
print jid, " ---> ",bot.getResources(jid), bot.getShow(jid), bot.getStatus(jid)
^
SyntaxError: invalid syntax

währe jemand so freundlich da rüber zuschauen und mir zu helfen?




Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import subprocess
import pifacedigitalio
from PyGtalkRobot import GtalkRobot

BOT_GTALK_USER = 'irgendnemail@gmail.com'
BOT_GTALK_PASS = 'geheim'
BOT_ADMIN = 'sudo@gmail.com'

pfd = pifacedigitalio.PiFaceDigital()

class RaspiBot(GtalkRobot):
    

    def command_001_setState(self, user, message, args):

        '''(available|online|busy|dnd|away|idle|out|xa)( +(.*))?$(?i)'''
        show = args[0]
        status = args[1]
        jid = user.getStripped()


        if jid == BOT_ADMIN:
            print jid , " ---> ",bot.getResources(jid), bot.getShow(jid), bot.getStatus(jid)
            self.setState(show, status)
            self.replyMessage(user, "State settings changed!")

    def command_000_Relayon(self, user, message, args):
        '''(relayon|pon|on|high)( +(.*))?$(?i)'''
        print "Ein1"
        relay_num = args[1]
        pfd.relays[0].value = 1, True
        self.replyMessage(user, "\nRelay on: "+ relay_num +" at: "+time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))


    def command_000_Relayoff(self, user, message, args):
        '''(relayoff|poff|off|low)( +(.*))?$(?i)'''
        print "Relay off\n"
        relay_num = args[1]
        pfd.relays[0].value = 0, False
        self.replyMessage(user, "\nRelay off: "+ relay_num +" at: "+time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))

    def command_000_write(self, user, message, args):
        '''(write|w)( +(.*))?$(?i)'''
        print "Relay write\n"
        arg_str = args[1]
        aargs = arg_str.split()
        relay_num = aargs[0]
        state = aargs[1]

        if int(state) == 1:
            pfd.relays[0].value (int(relay_num), True)
            self.replyMessage(user, "Relay on: "+ relay_num +" at: "+time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))
        elif int(state) == 0:
            pfd.relays[0].value (int(relay_num), False)
            self.replyMessage(user, "Relay off: "+ relay_num +" at: "+time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))


    def command_000_read(self, user, message, args):
        '''(read|r)( +(.*))?$(?i)'''
        print "Relay read\n"
        relay_num = args[1]
        pfd.relays[0].value = 0(int(relay_num))
        self.replyMessage(user, "\nRelay read: "+ relay_num + " value: " + str(relay_value) + " at: "+time.strftime("%Y-%m-%d %a %H:%M:%S",    time.localtime()))
    

    def command_003_shell(self, user, message, args):
        '''(shell|bash)( +(.*))?$(?i)'''
        cmd = args[1]
        p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        output = ""
        for line in p.stdout.readlines():
            output += line
            print line,
        retval = p.wait()
        self.replyMessage(user, output +" at: "+time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))
    

    def command_100_default(self, user, message, args):
        '''.*?(?s)(?m)'''
        self.replyMessage(user, time.strftime("%Y-%m-%d %a %H:%M:%S", time.localtime()))


if __name__ == "__main__":
    bot = RaspiBot()
    bot.setState('available', "Raspi Gtalk Robot")
    bot.start(BOT_GTALK_USER, BOT_GTALK_PASS)


Mit freundlichen Grüssen
Willhelm

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 11:02
von BlackJack
@Willhelm: Sieht danach aus als würdest Du versuchen Quelltext für Python 2 mit Python 3 auszuführen. In Python 2 ist ``print`` eine Anweisung, in Python 3 dagegen eine Funktion und damit ist dort der Versuch es wie eine Anweisung zu verwenden ein Syntaxfehler.

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 11:06
von anogayales
Kleiner Tipp: Poste ein Minimales Beispiel, dass dein Problem darstellt.

Deine Zeile 60 ist bei uns wahrscheinlich die Zeile 27 im geposteten Code. Wenn wir die helfen sollen ist es wichtig auch den Code zu sehen, der bei dir den Fehler hervorruft.

Mal ins Blaue geraten: Wird der Code mit Python 3 ausgeführt? Siehe http://docs.python.org/3.0/whatsnew/3.0 ... a-function

Grüße,
anogayales

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 11:48
von Willhelm
Ok werd ich machen

und kann mir jemand sagen wie ich die zeile umschreiben muss dass sie funktioniert?

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 11:55
von darktrym
Nicht dein Ernst? Soviel Code und du fragst nach einer trivialen Lösung. Google mal danach.

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 11:57
von Willhelm
nein nur das mit dem print?

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 13:15
von darktrym
Versuch's einfach mal, du musst schon ein wenig mitmachen.

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 13:44
von snafu
Man muss nicht mal googlen, sondern müsste nur mal den Link von anogayales anklicken. Da steht nämlich ziemlich direkt die Antwort drin.

Re: Relais über Google Talk steuern

Verfasst: Freitag 14. Februar 2014, 14:52
von Zennoe
Der Raspberry Pi hat auf jeden Fall Python 3 vorinstalliert. Achte bei deinen Tutorials darauf, ob sie sich auf Python 2 oder Python 3 beziehen.

Apropos Rasperry Pi: Falls du es nicht schon machst... mit

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
aktualisiert er dein komplettes System. Natürlich die Frage mit J/Y beantworten.

Re: Relais über Google Talk steuern

Verfasst: Mittwoch 19. Februar 2014, 15:57
von Willhelm
Ich habe es gelöst aber auf ein misteriösen fehler gestossen
wenn ich eine ältere gmail adresse verwende bockomme ich feedback nach dem geschaltet wurde wenn ich eine neue erstelle und mit der kontakt aufneheme wird geschaltet aber ich bekomme keine feedbacks