Script som inte riktigt funkar

http://karpero.mine.nu/ha

Moderators: Daniel, tom_rosenback, Telldus

Post Reply
Urme
Posts: 34
Joined: Fri Mar 17, 2023 9:45 am

Script som inte riktigt funkar

Post by Urme »

Hej!

Kör ett shellscript när någon ringer på dörrklockan så här:

Code: Select all

#!/bin/bash

echo "Trycker på ringklockan... ID: ${DEVICEID}" >> /tmp/tdlog.log

if [ "${DEVICEID}" = "6" ]; then
        echo "Ringklockan trycktes! ${DEVICEID}" >> /tmp/tdlog.log
        #url="http://192.168.1.101/ha/api.php?do=devices/toggle&deviceid=1&status=-1&redirect=./?page=devices"
        url="http://192.168.1.101/ha/api.php?do=devices/updateStatus&status=1&systempluginname=tdtool&systemdeviceid=1"
        wget -qO- "${url}" &> /dev/null
fi
Den loggar både Trycker på ringklockan och "Ringklockan trycktes" så det fungerar bra! Dock så vill jag att en lampa ska skifta läge, t.ex är den på så släcks den och är den av så tänds den. Första url:en tog jag från Enhetssidan direkt där man kan "toggla" av/på.
Andra url:en hittade jag i forumet här, men den sätter bara status=1
Dock fungerar ingen av dessa två :(

Testar jag att köra wget direkt som kommando får jag denna output på url2:

Code: Select all

pi@raspberrypi ~ $ wget -qO- http://192.168.1.101/ha/api.php?do=devices/updateStatus&status=0&systempluginname=tdtool&systemdevice=1
[10] 26550
[11] 26551
[12] 26552
[7]   Avslut 8                wget -qO- http://192.168.1.101/ha/api.php?do=devices/updateStatus
[8]   Klart                   status=1
[9]   Klart                   systempluginname=tdtool
Vet inte riktigt vad det säger?

Om jag kör samma grej men på url1:

Code: Select all

pi@raspberrypi ~ $ wget -qO- http://192.168.1.101/ha/api.php?do=devices/toggle&deviceid=1&status=-1
[17] 29037
[18] 29038
[15]   Avslut 8                sudo wget -qO- http://192.168.1.101/ha/api.php?do=devices/toggle
[16]   Klart                   deviceid=1
Men lampan tänds/släcks inte överhuvudtaget :(
Urme
Posts: 34
Joined: Fri Mar 17, 2023 9:45 am

Re: Script som inte riktigt funkar

Post by Urme »

Kör jag detta kommando:

Code: Select all

wget -qO- "http://192.168.1.101/ha/apitatus&status=0&systempluginname=tdtool&systemdeviceid=1"
Med snuffar runt url:en så loggas det åtminstone i HA att lampan tänds/släcks men det gör den inte egentligen.
Får denna JSON sträng tillbaka som svar då:
{"result":[{"id":"1"}]}
Urme
Posts: 34
Joined: Fri Mar 17, 2023 9:45 am

Re: Script som inte riktigt funkar

Post by Urme »

Nu har fått scriptet med toggle att fungera tillsammans med ringklockan. Vet inte varför det inte fungerade igår?
Så här ser scriptet ut, väldigt enkelt:

Code: Select all

#!/bin/bash
echo "En device i tellstick.conf reagerar... ID: ${DEVICEID}" >> /tmp/tdlog.log
if [ "${DEVICEID}" = "6" ]; then
        echo "Ringklockan trycktes! ${DEVICEID}" >> /tmp/tdlog.log
        url="http://192.168.1.101/ha/api.php?do=devices/toggle&deviceid=1&status=-1"
        wget -qO- "${url}" >> /tmp/tdlog.log
fi
Ringklockan har Deviceid = 6 i tellstick.conf
Mitt problem nu är att tydligen verkar det som att scriptet körs två gånger, eller att ringklockan skickar signalen två gånger ungefär som man trycker dubbelt. Detta innebär att lampan först tänds och sedan släcks igen.

Hur kan man förhindra detta?
tom_rosenback
Posts: 779
Joined: Fri Mar 17, 2023 9:45 am
Contact:

Re: Script som inte riktigt funkar

Post by tom_rosenback »

Urme wrote:Nu har fått scriptet med toggle att fungera tillsammans med ringklockan. Vet inte varför det inte fungerade igår?
Så här ser scriptet ut, väldigt enkelt:

Code: Select all

#!/bin/bash
echo "En device i tellstick.conf reagerar... ID: ${DEVICEID}" >> /tmp/tdlog.log
if [ "${DEVICEID}" = "6" ]; then
        echo "Ringklockan trycktes! ${DEVICEID}" >> /tmp/tdlog.log
        url="http://192.168.1.101/ha/api.php?do=devices/toggle&deviceid=1&status=-1"
        wget -qO- "${url}" >> /tmp/tdlog.log
fi
Ringklockan har Deviceid = 6 i tellstick.conf
Mitt problem nu är att tydligen verkar det som att scriptet körs två gånger, eller att ringklockan skickar signalen två gånger ungefär som man trycker dubbelt. Detta innebär att lampan först tänds och sedan släcks igen.

Hur kan man förhindra detta?
Det måste vara ringklockan som skickar sin signal två gånger vilket skapar det problem du upplever. Det borde du se i tdlog filen. För att förhindra detta kunde du till logg filen skriva klockslag på när ringklockan triggats och sen mha klockslaget i logg filen och nuvarande klockslag kolla så att tryckningarna inte kommer för snabbt.
//Tom

Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Urme
Posts: 34
Joined: Fri Mar 17, 2023 9:45 am

Re: Script som inte riktigt funkar

Post by Urme »

Jag löste det genom att jag skapade en katalog och tar bort katalogen när scriptet körts klart, då kollar jag om jag kan skapa katalogen eller inte, kan jag inte göra det innebär det att katalogen redan finns och då körs inte scriptet.
Satt en sleep på 5 sekunder innan katalogen tas bort också.

Har fungerat bra hittills!
tom_rosenback
Posts: 779
Joined: Fri Mar 17, 2023 9:45 am
Contact:

Re: Script som inte riktigt funkar

Post by tom_rosenback »

Urme wrote:Jag löste det genom att jag skapade en katalog och tar bort katalogen när scriptet körts klart, då kollar jag om jag kan skapa katalogen eller inte, kan jag inte göra det innebär det att katalogen redan finns och då körs inte scriptet.
Satt en sleep på 5 sekunder innan katalogen tas bort också.

Har fungerat bra hittills!
Det är ju också en lösning, fungerar säkert bra den med!
//Tom

Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Post Reply