Relais über Google Talk steuern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Willhelm
User
Beiträge: 26
Registriert: Montag 10. Februar 2014, 09:06

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
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.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
Willhelm
User
Beiträge: 26
Registriert: Montag 10. Februar 2014, 09:06

Ok werd ich machen

und kann mir jemand sagen wie ich die zeile umschreiben muss dass sie funktioniert?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Nicht dein Ernst? Soviel Code und du fragst nach einer trivialen Lösung. Google mal danach.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Willhelm
User
Beiträge: 26
Registriert: Montag 10. Februar 2014, 09:06

nein nur das mit dem print?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Versuch's einfach mal, du musst schon ein wenig mitmachen.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man muss nicht mal googlen, sondern müsste nur mal den Link von anogayales anklicken. Da steht nämlich ziemlich direkt die Antwort drin.
Benutzeravatar
Zennoe
User
Beiträge: 16
Registriert: Montag 12. August 2013, 21:46

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.

Code: Alles auswählen

print("Zennoe sprach!")
Ja, das hat er!
Willhelm
User
Beiträge: 26
Registriert: Montag 10. Februar 2014, 09:06

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
Antworten