SwitchKing + EventGhost + Rasberry + OneWire

Andra typer av bidrag | Other contributions
Post Reply
gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: SwitchKing + EventGhost + Rasberry + OneWire

Post by gus » Sat 10 Aug 2013, 20:22

Håller på och meckar lite i min Pi för att se om det går att snabba upp läsningarna av mina PIR deckare.
Jag kan köra ow_read.py med lite moddade adresser och får det till EG.
Skulle vara tacksam om någon kunde hjälpa mig att modda bifogad kodsnutt så den bara skickar iväg en payload när värdet är ändrat.

Code: Select all

#!/usr/bin/env python

# This script sends the measured light and temperature.
# To edit the list of cronjobs: sudo crontab -e

import time
import os
import sys
import socket

zone = '192.168.17.255'
port = 33334
addr = (zone, port)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Create socket
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.settimeout(2.0)

eventString = 'PIR TV: '
payload = []

for i in range(5):
    try:
        if i > 0:
            time.sleep(1.0)
        p = os.popen('/opt/owfs/bin/owread -s localhost:3001 3A.05400D000000/sensed.A')
        res = p.read()
        payload.append(str(res).strip())
        break
    except IOError:
        if (i == 4):
            payload.append('IOError')
            time.sleep(1.0)
            break

sock.sendto(eventString + '&&' + str(payload), addr)

sock.close()

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

Re: SwitchKing + EventGhost + Rasberry + OneWire

Post by krambriw » Sun 11 Aug 2013, 07:39

Hej Gus,

För att kunna göra det så måste man lagra undan ett värde som man senare använder vid jämförelse nästa gång. I Python finns det olika möjligheter alltifrån användning av en databas (overkill i detta fall) till andra lämpliga metoder. Det går inte att bara använda ett *vanligt* objekt eftersom de alltid initieras på nytt vid körningen av skriptet.

Jag har valt att använda shelve i ditt exempel (kanske kan översättas till hylla eller fack). När scriptet körs, testas om den hittar ett tidigare värde och om det är lika som nu eller annorlunda. Om det har skett en förändring sänds denna ut via sockets och samtidigt uppdateras objektets värde i shelve inför nästa körning.

Om du har flera ir-deckare kan du utöka scriptet eller göra ett individuellt och anpassat för varje detektor

mvh

Code: Select all

#!/usr/bin/env python

# This script sends the measured light and temperature.
# To edit the list of cronjobs: sudo crontab -e

import time
import os
import sys
import socket
import shelve

zone = '192.168.17.255'
port = 33334
addr = (zone, port)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Create socket
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.settimeout(2.0)

eventString = 'PIR TV: '
payload = []
old_res = None
sh = shelve.open('/tmp/PIR.TV')
try:
    old_res = sh['pir_tv']
except:
    pass

for i in range(5):
    try:
        if i > 0:
            time.sleep(1.0)
        p = os.popen('/opt/owfs/bin/owread -s localhost:3001 3A.05400D000000/sensed.A')
        res = p.read()
        payload.append(str(res).strip())
        break
    except IOError:
        if (i == 4):
            payload.append('IOError')
            time.sleep(1.0)
            break

if str(res).strip() <> old_res:
    sock.sendto(eventString + '&&' + str(payload), addr)
    sh['pir_tv'] = str(res).strip()

sh.close()
sock.close()

gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: Sv: SwitchKing + EventGhost + Rasberry + OneWire

Post by gus » Sun 11 Aug 2013, 18:00

Tackar! Nu har jag fått igång det. Jag kör det med ett Bash skript som anropar python skriptet 1 gång per sekund. Jag upplever en liten prestanda förbättring. Sen pekade jag på uncached biblioteket och då blev det sprutt på det!

Det enda negativa är att varje python process tar ganska mycket cpu kraft, typ 10 procent. Går nog att optimera det lite mera, men nu är det igång!

Skickat från min GT-I9100 via Tapatalk 2

kloow
1 star
1 star
Posts: 7
Joined: Tue 26 Jul 2011, 21:46

Re: SwitchKing + EventGhost + Rasberry + OneWire

Post by kloow » Wed 14 Aug 2013, 11:52

Mitt system rullar på bra nu med.

Körde på varianten med pollning via Eventghost som skickas till Switchking via en fil. Hittade en liten relativt ny HD som jag skicka in i servern där jag dumpar .txt filerna. Tänkte att denna disk får dedikeras till detta så jag inte lastar andra diskar med dessa jobb. (kanske onödigt för så små textfiler men har ingen annan användning för disken så....)

*Ett antal tempsensorer som uppdaterar var 10:e minut, lagt in dem i switchking som datakällor.
*Statusen på hemlarmet om det är avlarmat/pålarmat som uppdaterar varje minut. (läser av en utgång på larmet +12V el 0V) ligger även som datakälla i switchking. Snyggt att ha den som en widget i min android så kan jag se live om larmet är aktiverat eller ej.
*Larmevents (inbrott el brand) som uppdaterar var 5:e sekund (används mer som backup då jag även har en SMS dialer kopplat till larmet)

Nästa steg är det omvända då jag vill kunna styra larmet via +5V el 0V och på så sett larma på/av via mobilen. Inte riktigt lagt upp någon plan för det än...

Har kollat belastningen på servern och den verkar vara relativt lugn så jag kör nog vidare på detta (trots att det är en gammal AMD häck med många år på nacken).
Känner inte att det är någon fara på LANet heller då det ändå rullar en jäkla massa trafik där. Kör bara trådat med en D-Link (något dyrare modell 10/100/1000-24P) som backend switch.

Tack för all hjälp, hade inte kommit igång så här snabbt utan era lösningar och tips :clap:

gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: Sv: SwitchKing + EventGhost + Rasberry + OneWire

Post by gus » Wed 14 Aug 2013, 18:10

Vad kul att du fått igång det så bra!

/Rickard


Skickat från min GT-I9100 via Tapatalk 2

gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: SwitchKing + EventGhost + Rasberry + OneWire

Post by gus » Sat 17 Aug 2013, 14:16

Hej!

Jag försöker att skriva till en I/O krets på Pi.en via OWservern men lyckas inte få till det.
Det kommer inget felmeddelande, dock så ändrar sig inte PIO.A
Det är allra högst troligt att mina Pythonkunskaper sviker mig igen, så här ser det ut:

Code: Select all

p = os.popen('/opt/owfs/bin/owread -s localhost:3001 /12.725782000000/PIO.A', 'w', 1)
p.write('1')

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

Re: SwitchKing + EventGhost + Rasberry + OneWire

Post by krambriw » Sun 18 Aug 2013, 17:09

Två sätt:

1) Om du kör ett python script från EG så kan du använda de redan existerande funktionerna i pluginnen

Code: Select all

eg.plugins.OneWireClient.WriteAttribute(u'Give me a name', u'/12.725782000000', u'PIO.A', u'1')
2) Om du vill köra python scriptet direkt i Raspberryn så kan du använda det här scriptet som du flyttar in i din Raspberry:

Code: Select all

#!/usr/bin/env python

# This script writes a value.
# To edit the list of cronjobs: sudo crontab -e

import os
import sys

os.system('/opt/owfs/bin/owwrite -s localhost:3001 12.725782000000/PIO.A 1')
mvh

gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: Sv: SwitchKing + EventGhost + Rasberry + OneWire

Post by gus » Sun 18 Aug 2013, 18:59

krambriw wrote:Två sätt:

1) Om du kör ett python script från EG så kan du använda de redan existerande funktionerna i pluginnen

Code: Select all

eg.plugins.OneWireClient.WriteAttribute(u'Give me a name', u'/12.725782000000', u'PIO.A', u'1')
2) Om du vill köra python scriptet direkt i Raspberryn så kan du använda det här scriptet som du flyttar in i din Raspberry:

Code: Select all

#!/usr/bin/env python

# This script writes a value.
# To edit the list of cronjobs: sudo crontab -e

import os
import sys

os.system('/opt/owfs/bin/owwrite -s localhost:3001 12.725782000000/PIO.A 1')
mvh
Super!
Det var owwrite som jag missat.
Tack!

Skickat från min GT-I9100 via Tapatalk 2

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests