Eventghost temperatur styrning?

Moderator: Telldus

Post Reply
Karlvonoxelstjerna
Posts: 59
Joined: Fri Mar 17, 2023 9:45 am

Eventghost temperatur styrning?

Post by Karlvonoxelstjerna »

Jag undrar hur nyttjar man tempen som man får fram i Eventghost?

När man har en tempgivare t.ex teknikmagasinets jenkinsbird så får man i loggen en rad som ser ut som så här.
" TellstickDuo.fineoffset.temperature.223.Temperature: '8.1|2012-10-22 18:07:17 '"

Hur skriver man då för att få den att trigga t.ex ett element eller dylikt om den går under 5grader?
Går ju att få den att trigga varje gång tempgivaren sänder nåt men det är kanske inte det man vill :).
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

I den här tråden diskuteras detta utförligt. Principen blir densamma, det som skiljer är bara formatet på eventet i EG eftersom det kommer från en annan typ av transceiver.
http://www.eventghost.net/forum/viewtop ... f=2&t=3982

I den här tråden på sid 10 finns en liknande diskussion där man önskar slå på/av AC beroende på aktuell temperatur.
http://www.eventghost.net/forum/viewtop ... 120#p22325


mvh Walter
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

Du kan testa lite med scriptet nedan. Skapa ett makro med ett pythonscript i EG. Klistra in nedanstående script. Dra ditt event från din temperaturgivare till makrot.

Varje gång eventet kommer in körs därefter scriptet. Om tempen är lägre än lägsta nivån, kommer ett nytt event att genereras första gången. Detta drar du till ett nytt makro som innehåller påslagsfunktion för elementet. Om tempen sedan når din övre gräns så genereras ett nytt event första gången som du kan använda för att slå av elementet via ytterlligare ett makro med frånslagsfunktion.

Totalt skall du alltså definiera tre makron;
- ett för att utvärdera eventet från temp sensorn
- ett för att slå på elementet
- ett för att slå från elementet

mvh

Code: Select all

#Heating Unit Control
newEvent = str(eg.event.suffix)
newPayload = eg.event.payload
name = 'My Heating Unit'
id = 223
high_level = 10.0
low_level = 5.0

try:
    status
except NameError:
    status = ''

if newEvent.split('.')[3] == str(id):
    temp = newPayload.split('|')[0]

    if(
        float(temp) > high_level
        and (
                status == 'ON'
                or
                status == ''
            )
    ):
        print status
        eg.TriggerEvent(
            name
            +"|"
            +'High Temp Level reached'
            +"|"
            +str(id)
        )
        status = 'OFF'
           
    if(
        float(temp) < low_level
        and (
                status == 'OFF'
                or
                status == ''
            )
    ):
        print status
        eg.TriggerEvent(
            name
            +"|"
            +'Low Temp Level reached'
            +"|"
            +str(id)
        )
        status = 'ON'
Karlvonoxelstjerna
Posts: 59
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Karlvonoxelstjerna »

krambriw wrote:I den här tråden diskuteras detta utförligt. Principen blir densamma, det som skiljer är bara formatet på eventet i EG eftersom det kommer från en annan typ av transceiver.
http://www.eventghost.net/forum/viewtop ... f=2&t=3982

I den här tråden på sid 10 finns en liknande diskussion där man önskar slå på/av AC beroende på aktuell temperatur.
http://www.eventghost.net/forum/viewtop ... 120#p22325


mvh Walter
Grymt, man tackar! Väldigt utförliga svar med eget script också :clap: ! Är helt ny på Eventghost men det känns riktigt kraftfullt får väl sätta mig in lite grundläggande i Python också. Känns som det kommer öka möjligheterna en hel del.
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

En termostat i form av ett script. Men det är ju sen det roliga börjar när man kan börja koppla detta till oika regler och eventuellt tidsstyrningar m.m

Det finns så oändligt med möjligheter,

Lycka till
Karlvonoxelstjerna
Posts: 59
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Karlvonoxelstjerna »

Suttit ett tag med det nu men får ett felmeddelande som lyder.

23:41:40 Traceback (most recent call last):
23:41:40 Python script "23", line 14, in <module>
23:41:40 if newEvent.split('.')[3] == str(id):
23:41:40 IndexError: list index out of range

Eventet ser ut så här.
23:41:42 TellStickDuo.fineoffset.temperature.223.Temperature: '5.7|2012-10-23 23:41:42'

Vad kan vara fel?
Kanske fått allt om bakfoten men är det så att raden " if newEvent.split('.')[3] == str(id) "
Hämtar in det som står efter tredje punkten kollar så det är lika med id, stämmer det då går den vidare med skriptet?.
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

Prova att ändra

Code: Select all

if newEvent.split('.')[3] == str(id):
till

Code: Select all

if newEvent.split('.')[2] == str(id):
Karlvonoxelstjerna
Posts: 59
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Karlvonoxelstjerna »

Tackar för tipset hade dock redan provat det, men hittade iaf felet.
Jag hade lagt in eventet i macrot fel. Hade lagt in hela strängen genom att dra över den till macrot mellan fönstrena som det står att man kan göra. Men högerklickar man i macrot och väljer lägg till händelse då får man med eventet på det sättet det ska se ut :) .
Men jag lärde mig en del påvägen hur scriptet är uppbyggt. Grymt nöjd med den snabba supporten du håller :D !
maah
Posts: 1
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by maah »

Hur får man makrot att köras?
Om jag drar tempgivarens händelse till makrot så körs det som det ska men när temperaturen sjunker så skickar ju tempgivaren en annan händelse med lägre temperatur och då körs ju inte makrot.

Så ser min temphändelse ut:
TellStickDuo.RawEvent: class:sensor;protocol:fineoffset;model:temperaturehumidity;temp:6.0;humidity:0xFF;id:0xA8;Duo_ID:9

Finns det något "magiskt tecken man kan använda?
TellStickDuo.RawEvent: class:sensor;protocol:fineoffset;model:temperaturehumidity;%
TellStickDuo.RawEvent: class:sensor;protocol:fineoffset;model:temperaturehumidity;*

MVH Magnus
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

Scriptet ovan är designat så att det bara ska köras en gång när de inställda temperaturgränserna low/high passeras. Oklart vad/hur du vill göra!?

mvh
Skogsmulle
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Skogsmulle »

Passar på att låna tråden lite, har samma problem.
Så här följer min uppställning.

Hittar sensorn i Telldus center har id 230 och model 1A2D.

2. I eventghost så updateras värden med jämna mellanrum, ibland ofta och ibland inte lika ofta det står. “TellStickDuo.oregon.1A2D.230.Temperature: ’23.5|2012-10-15 22:44:03′”
So far så good..

3.Mitt Python script är följande:

p = eg.event.payload
p = p.split(‘|’)
outtemp230 = p[0]
eg.globals.outtemp230 = outtemp230
skriva ut outtemp230
importera datetime
Nu = datetime.datetime.now()
outtemp230time = now.strftime(“%Y-% m-% d% H:%M”)
eg.globals.outtemp230time = outtemp230time

4. När har skrivit sciptet och trycker och får jag upp varningen:

Error compiling script.
Traceback (most recent call last):
SyntaxError: invalid syntax (10, line 2)

5. Det är där det inte fungerar.

6. Texten på hemsidan:

Eventghost Web Gui
hemskärm
Min Street 1
Utetemperatur:{{eg.globals.outtemp230}} °C

Några förslag på vad som kan vara fel? Får det att fungerara mellanåt när jag sitter och trycker test ett ex antal ggr i scipt edit.
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

Det är bättre att du klistrar in din aktuella kod istället så att man kan kolla din syntax och se vad som är snett

Du kan till att börja med ändra dom första två raderna enligt nedan och se om det hjälper

Code: Select all

p = str(eg.event.payload)
p = p.split("|")
Skogsmulle
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Skogsmulle »

krambriw wrote:Det är bättre att du klistrar in din aktuella kod istället så att man kan kolla din syntax och se vad som är snett

Du kan till att börja med ändra dom första två raderna enligt nedan och se om det hjälper

Code: Select all

p = str(eg.event.payload)
p = p.split("|")
Min aktuella kod är som den är nu ner bantad till enbart:
p = str(eg.event.payload)
p = p.split("|")
outtemp230=p[0]
eg.globals.outtemp230 = outtemp230

Den ändringen som du skrev gjorde att error delen löste sig dock så står det nu på min interna hemsida står det "none" där det förut stod ett temperatur.

Edit: nu fick jag det att fungera, var ett litet stavfels miss i eventghost som gjorde att det inte lirade.

Men är det nu möjligt att använda följande kod för att kunna få med klockan som ska visa när den updaterades?

p = str(eg.event.payload)
p = p.split("|")
outtemp230 = p[0]
eg.globals.outtemp230 = outtemp230
importera datetime
Nu = datetime.datetime.now()
outtemp230time = now.strftime(“%Y-% m-% d% H:%M”)
eg.globals.outtemp230time = outtemp230time
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by krambriw »

Jag gissar bara nu men du kanske behöver ett tal istället för en sträng,

Då kan du göra så här:

Code: Select all

p = str(eg.event.payload)
p = p.split("|")
print p #ta bort senare när vi vet att du får tag i rätt data
outtemp230=float(p[0])
eg.globals.outtemp230 = outtemp230
mvh
Skogsmulle
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Re: Eventghost temperatur styrning?

Post by Skogsmulle »

krambriw wrote:Jag gissar bara nu men du kanske behöver ett tal istället för en sträng,

Då kan du göra så här:

Code: Select all

p = str(eg.event.payload)
p = p.split("|")
print p #ta bort senare när vi vet att du får tag i rätt data
outtemp230=float(p[0])
eg.globals.outtemp230 = outtemp230
mvh
Den koden som du först skrev fungerarde helt perfekt efter att jag upptäckte ett skriv fel.
Så postar den här iaf någon annan skulle vilja ta del av hur man enkelt får ut temperatur på hemsidan:

Code: Select all

p = str(eg.event.payload)
p = p.split("|")
outtemp230=p[0]
eg.globals.outtemp230 = outtemp230
Post Reply