Få SK att skicka ett kommando på en dator

Supportfrågor för server och klient (Windows, iPhone, Android, Linux).
Forum rules
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Få SK att skicka ett kommando på en dator

Post by krambriw » Wed 19 Nov 2014, 18:06

Tycker det verkar som om du gjort korrekt. Jag gjorde ett script som simulerar ditt event och det fungerar för mig. I RPi'n visas

Code: Select all

['Switchking.DataSource.KnappRingklocka:ON']
I EG's log

Code: Select all

18:04:18   Switchking.DataSource.KnappRingklocka 'ON'
'ON' ligger i den så kallade payloaden och den borde föras över om du konfigurerat allting korrekt enligt min exempelbild tidigare. Kolla särskilt raden för 'Message'. Den måste se ut så här

Code: Select all

{eg.event.string+':'+eg.event.payload}

cazz
3 stars
3 stars
Posts: 94
Joined: Mon 05 May 2014, 15:34

Re: Få SK att skicka ett kommando på en dator

Post by cazz » Thu 20 Nov 2014, 20:48

Hmm in visar OFF i RPi på båda
['Switchking.DataSource.KnappRingklocka:OFF']
['Switchking.DataSource.KnappRingklocka:OFF']
Samma sak i EG.
Den visade rätt innan i EG, skumt

Men fungerar som det ska efter jag startade om EG så nu fungerar det.
Så nu gäller det att förstå hur man ska få in att den bara ska köra i ON lägge i Python

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Få SK att skicka ett kommando på en dator

Post by krambriw » Fri 21 Nov 2014, 06:08

Principen är enkel, du kan lägga till följande i funktionen 'on_message' i python scriptet i RPi'n

Code: Select all

	if str(msg.payload) == 'Switchking.DataSource.KnappRingklocka:ON':
            print 'pling'
Givetvis byter du ut print satsen mot ditt 'subprocess.call....'


Mitt 'on_message' som jag simulerar/testar med ser då ut så här:

Code: Select all

def on_message(mosq, obj, msg):
    global th_abort
    global debug
    if str(msg.topic).find('switchking') > 0:
        event = str(msg.payload).split(',')
        print event # for debugging
        if str(msg.payload) == 'Switchking.DataSource.KnappRingklocka:ON':
            print 'pling'
        if str(msg.payload).find('Dimmer') != -1:
            print 'pass'
            #subprocess.call(do_this)
        if str(msg.payload).find('do_that') != -1:
            pass
            #subprocess.call(do_that)
        if str(msg.payload).find('shut_down') != -1:
            th_abort = True
            print str(msg.payload)
Last edited by krambriw on Sat 22 Nov 2014, 07:30, edited 1 time in total.

cazz
3 stars
3 stars
Posts: 94
Joined: Mon 05 May 2014, 15:34

Re: Få SK att skicka ett kommando på en dator

Post by cazz » Fri 21 Nov 2014, 15:57

kan du lägga upp en py fil för jag får fel hela tiden

"IndentationError: unexpected indent" eller så blir det "IndentationError: unindent does not match any outer indentation level"

Söker man på nätet på problemet så verkar det som man kan blanda ihop tab och mellanslag men svårt att veta när man aldrig har jobbat i python.

När jag jobbar i andra språk så brukar det inte vara sååå känsligt :)

Tanken är ju bara att just nu vill jag bara att den ska köra ett bash fil när det händer. en subprocess (eller vad det nu heter i python.

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Få SK att skicka ett kommando på en dator

Post by krambriw » Fri 21 Nov 2014, 17:57

Visst, python är super-känsligt för detta, du får bara använda 4 mellanslag för varje indent så att säga. Jag använder Notepad ++ alternativt UltraEdit som editor

Nu vet jag inte exakt hur din python fil ser ut just nu så du får min där jag lagt in filtrering på din ring-ring 'ON'

mvh
MQTT_SK.zip
You do not have the required permissions to view the files attached to this post.

cazz
3 stars
3 stars
Posts: 94
Joined: Mon 05 May 2014, 15:34

Re: Få SK att skicka ett kommando på en dator

Post by cazz » Fri 21 Nov 2014, 18:41

Tack så hemsk mycket, ställt in så den starta gång bashfilen.

Det enda jag ska försöka fixa är att python körs när RPi är igång, länken du gav mig är bra, fick inget felmedelande men är endå osäker om den körs så jag ska titta lite mer på det i helgen.

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Få SK att skicka ett kommando på en dator

Post by krambriw » Sat 22 Nov 2014, 07:38

Om du har lagt körordern enligt länken med crontab -e

Code: Select all

@reboot python /home/pi/MQTT_SK.py &
så kan du kolla om processen kör igång genom att öppna en ny putty session och skriva 'ps aux'. I listan bör du hitta skriptet liknande detta.

Code: Select all

pi        2545  0.3  1.2  19056  5408 pts/0    Sl+  06:35   0:00 python MQTT_SK.py
Om du har syntaxfel så funkar naturligtvis inte scriptet. Innan du lägger in det för autostart bör du testa det manuellt tills det funkar som det är tänkt. När du vill bryta exekveringen skall du skicka in kommandot 'shut_down' från EG som jag beskrev tidgare. Bryter du exekveringen manuellt tror jag threaden lever vidare tills du gör reboot på RPi'n.

Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests