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

- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
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

- Posts: 94
- Joined: Mon 05 May 2014, 15:34
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

- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
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

- Posts: 94
- Joined: Mon 05 May 2014, 15:34
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

- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
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

- Posts: 94
- Joined: Mon 05 May 2014, 15:34
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

- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
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.
Who is online
Users browsing this forum: No registered users and 4 guests