Page 1 of 1

telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by jonaz
telldus-core Version: 2.0.104-3 i ubuntu 64 LTS.

Nu har telldusd ätit mycket mer cputid än många andra tunga saker på servern. Så borde det inte behöva vara.

13776 nobody 20 0 204m 1388 896 S 2 0.0 316:08.75 telldusd
4612 squeezeb 20 0 290m 199m 2976 S 1 2.5 300:53.99 squeezeboxserve
969 root 20 0 0 0 0 S 0 0.0 117:51.52 md3_raid5
4709 proxy 20 0 86384 37m 1696 S 0 0.5 75:47.79 squid3
9 root 20 0 0 0 0 S 0 0.0 57:26.95 ksoftirqd/1
5023 root 20 0 128m 7824 1996 S 0 0.1 40:31.50 fail2ban-server


Sedan har jag ännu ett problem. Om jag skickar till tellstick och samtidigt försöker sända så fungerar den inte. (eller bara ibland)
Säg att jag har en trådlös remote som RÅKAR skicka på samma frekvens så tellstick känner igen den. tex min IR/RF sändare för fjärrkontrollen.

Dvs när jag trycker på remoten så skall lampan tändas i taket. Fjärren skickar IR som ett specialbatteri gör om till RF (finns att köpa på kjell.com).
Då tar RF mottagaren hand om detta och skickar det till IR-mottagaren på servern som skickar det till tellsticken som säger tänd lampan.

Nu är problemet att tellstickd oxå reagerar på den trådlösa signalen från specialbatteriet. Exempel:
16:TDRawDeviceEvent58:protocol:x10;type:codeswitch;house:M;unit:5;method:turnon;i-1s

Då verkar det inte som den klarar av att skicka signalen när jag exakt samtidigt försöker köra tex: tdtool --on 11

Borde det inte vara någon inbyggt kö hantering så att detta funkar? Om tellstick inte hinner med att skicka borde den vänta tills den läst klart det inkommande paketet och sedan skicka?

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by stefan.persson
För att läsa meddelanden från TellStick Duo i Linux har vi en loop som kollar var x:e millisekund. I Windows och Mac har vi istället löst det med event notifications, men har i detta fall inte lyckats med det i Linux. Hittills har vi kollat varje millisekund, men har nu istället ändrat detta värde till bara var 100:e millisekund. Detta sänker cputiden väldigt mycket, men vi måste testa en period att mottagningen bibehålls, och hitta ett värde med rätt balans.

Angående ditt andra problem, kan du ge oss lite mer information? Kan du se om LED:en på TellStick Duo indikerar sändning? Eller får du något felmeddelande i tdtool?

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by jonaz
Jag kan se att den blinkar mottagning. sedan får tdtool ett fel typ could not connect to tellstick. Detta antar jag är pga den försöker sända exakt samtidigt som den tar emot.

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by stefan.persson
Ah, ok! Skulle du vid tillfälle kunna kolla vilket felmeddelande tdtool ger?

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by jonaz
Såhär blir felet:

Det är en php demon som forkat och både skickar och lyssnar på tellsticken:

2011-05-23 10:18:50.28954 tellstick <! 91409269c4e42f46aeb926eaaa18fca3 | toggle ( här tar den emot kommandot via lirc som får signalen trådlöst via http://www.kjell.com/?item=66061)
2011-05-23 10:18:50.48624 ## 16:TDRawDeviceEvent59:protocol:x10;type:codeswitch;house:M;unit:1;method:turnoff;i-1s (här lyssnar jag på telldusd socket)
2011-05-23 10:18:53.104229 ## Turning on device 10, Tak vardagsrum - An error occurred while communicating with TellStick (här kör jag kommandot, notera tidsstämpeln är inte när komandot körs igång utan när felmeddelandet skrivs ut)

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by stefan.persson
Vi kan inte återskapa detta felet, men vi har givetvis inte tillgång till samma setup som du har och kan inte testa det som vi skulle önskat. Vi har försökt provocera med massa samtidiga mottagningar och sändningar, och även om inget tas emot eftersom det krockar och stör ut varandra så uppstår åtminstone inget fel för oss.

Om du manuellt skickar ett vanligt tdtool-kommando efter detta, blir det fel också där då?

I vilket fall skulle programmet förmodligen ändå inte fungera så bra just nu om du inte lägger in en paus mellan mottagande och skickande, så att det hinner lugna ner sig i luften.

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by jonaz
Jag la in lite mer debug så man ser när tdtool kommandots körs och när det efter några sekunder säger att de inte kan prata med tellstick.

2011-05-23 11:42:22.485552 tellstick <! 3af328d646ca353185d13ee79acae577 | toggle
2011-05-23 11:42:22.485895 ## running --off 10
2011-05-23 11:42:22.513547 ## 16:TDRawDeviceEvent59:protocol:x10;type:codeswitch;house:M;unit:1;method:turnoff;i-1s
2011-05-23 11:42:25.698298 ## Turning off device 10, Tak vardagsrum - An error occurred while communicating with TellStick


Det är en bieffekt att rf-grejjen köpt på kjelloco skickar signaler som tellsticken råkar förstå... i just detta fallet:
16:TDRawDeviceEvent59:protocol:x10;type:codeswitch;house:M;unit:1;method:turnoff;i-1s

Funktionen jag vill uppnä är (och som alltid funkat med tellstick ) är: irfjärr -> specialbatteri -> rf -> rfmottagare --> irsignal -> irmottagare i servernn -> lirc -> tdtool tänd/släck.

Kan tillägga att jag har dev versionen av duo med firmware 3 (osäker på firmware, den som fick stöd för temperatur sensorer kör jag).

Re: telldusd äter cpu+ tellstick bara gör en sak i taget?

Posted: Fri Mar 17, 2023 9:45 am
by Nicke2k
Kapar din tråd lite trots att den är lite gammal nu.

Hur lyssnar du på kommandon med hjälp av PHP? Jag har min Duo installerad och det funkar att släcka och tända med tdtool... jag har dock inte kommit på hur man lyssnar på inkommande signaler. Jag jobbar bara i PHP så det skulle vara guld om du kunde dela med dig av hur man kan göra för att lyssna (och behandla) via PHP. :)

Edit:
Ah,
http://www.telldus.se/forum/viewtopic.php?p=6253#p6253
Du får gärna svara i min tråd om hur man kan göra för att både skicka och läsa via PHP!
http://www.telldus.se/forum/viewtopic.php?f=8&t=1417
Det skulle uppskattas väldigt!