Tips: Drifttidsmätare

Moderators: hekj, Telldus

Tips: Drifttidsmätare

Postby hekj » Sun Jan 15, 2017 10:37 am

Den som vill veta hur länge en viss device har varit påslagen kan fixa detta genom att först skapa en fil som innehåller de enheters deviceid som man vill hålla koll på, därefter skapar man två scripts.

C:/apps/nexahome/minute_meter.txt
Code: Select all
3=0
5=0

start.bsh
Code: Select all
startTimer(minute_meter, 60);

minute_meter.bsh
Code: Select all
file = "C:/apps/nexahome/minute_meter.txt";
timeout = 60;
comment = "Devices has been turned on for x minutes.";
timer = getScriptName();

Properties prop = new Properties();
InputStream is = null;
OutputStream os = null;

updated = false;

try {

  is = new FileInputStream(file);
  prop.load(is);

  keys = prop.keys();
  while (keys.hasMoreElements()) {
    String id = (String)keys.nextElement();
    String value = prop.getProperty(id);
    long minutes = Long.parseLong(value);
    if (deviceIsOn(id)) {
      updated = true;
      minutes = minutes + 1;
    }
    prop.setProperty(id, Long.toString(minutes));
    System.out.println(minutes);
  }

  if (updated) {
    os = new FileOutputStream(file);
    prop.store(os, comment);
  }

  startTimer(timer, timeout);

} catch (IOException ioe) {
  echo(ioe.getMessage());
} finally {
  if (is != null) {
    try {
      is.close();
    } catch (IOException ioe) {
      echo(ioe.getMessage());
    }
  }
  if (os != null) {
    try {
      os.close();
    } catch (IOException ioe) {
      echo(ioe.getMessage());
    }
  }
}

Ovanstående script använder sig av metoden getScriptName() som finns i version 4.1.9 och senare.
hekj
 
Posts: 959
Joined: Mon Jan 05, 2009 10:34 am
Location: Stockholm

Re: Tips: Drifttidsmätare

Postby Leffe » Sun Jan 15, 2017 2:46 pm

Ja det är ju helt strålande !!!
Klockren funktion , som jag länge önskat
Tack igen för ett strålande program :D :D
Leffe
 
Posts: 66
Joined: Sun Jan 05, 2014 2:45 pm

Re: Tips: Drifttidsmätare

Postby Silversurfaren » Sat Jan 21, 2017 10:43 am

Trevlig funktion men lite synd att att en återstart av timern varje minut resulterar i ett entry i Console-loggen vilket gör att den snabbt känns 'översvämmad'. Jag upplever att i, åtminstone, detta fallet skulle det vara trevligt att kunna utesluta drifttidsmätningen...

Finns det något sätt att kanske kunna filtrera vad man vill ska gå in i Console-loggen?
Silversurfaren
 
Posts: 7
Joined: Fri Nov 13, 2015 6:12 am
Location: Linköping

Re: Tips: Drifttidsmätare

Postby hekj » Sat Jan 21, 2017 12:43 pm

Silversurfaren wrote:Trevlig funktion men lite synd att att en återstart av timern varje minut resulterar i ett entry i Console-loggen vilket gör att den snabbt känns 'översvämmad'. Jag upplever att i, åtminstone, detta fallet skulle det vara trevligt att kunna utesluta drifttidsmätningen...

Finns det något sätt att kanske kunna filtrera vad man vill ska gå in i Console-loggen?

Lägg in följande rad.
Code: Select all
hideOutput();
hekj
 
Posts: 959
Joined: Mon Jan 05, 2009 10:34 am
Location: Stockholm

Re: Tips: Drifttidsmätare

Postby Silversurfaren » Sat Jan 21, 2017 2:47 pm

Precis vad jag sökte, det var ju nästan för enkelt... :)

Tack!
Silversurfaren
 
Posts: 7
Joined: Fri Nov 13, 2015 6:12 am
Location: Linköping

Re: Tips: Drifttidsmätare

Postby Leffe » Tue Feb 07, 2017 11:22 am

Hej Igen
som jag sagt tidigare en fantastisk funktion , men skulle det på något sätt gå att få en fil för varje dygn ?? . det vore ju pricken över I :D :D
Leffe
 
Posts: 66
Joined: Sun Jan 05, 2014 2:45 pm

Re: Tips: Drifttidsmätare

Postby Silversurfaren » Wed Feb 15, 2017 6:20 am

Leffe wrote:Hej Igen
som jag sagt tidigare en fantastisk funktion , men skulle det på något sätt gå att få en fil för varje dygn ?? . det vore ju pricken över I :D :D


Går att lösa, jag ville också ha en fil/dygn och lät ett shell-script och crontab hantera det hela.
Silversurfaren
 
Posts: 7
Joined: Fri Nov 13, 2015 6:12 am
Location: Linköping

Re: Tips: Drifttidsmätare

Postby Leffe » Wed Feb 15, 2017 6:53 am

Silversurfaren wrote:
Leffe wrote:Hej Igen
som jag sagt tidigare en fantastisk funktion , men skulle det på något sätt gå att få en fil för varje dygn ?? . det vore ju pricken över I :D :D


Går att lösa, jag ville också ha en fil/dygn och lät ett shell-script och crontab hantera det hela.


Hej låter ju bra,är det något du vill dela med oss som inte är så kunniga att skapa script mm :D
Leffe
 
Posts: 66
Joined: Sun Jan 05, 2014 2:45 pm

Re: Tips: Drifttidsmätare

Postby Silversurfaren » Wed Feb 15, 2017 6:14 pm

Det finns många sätt att göra de på och min lösning är enkel och byter bara namn på min minuteMeter.txt och lägger datum (DATE) till filnamnet och kopierar sedan en tom fil där enheterna finns angivna (minuteMeter.base) till den fil som funktionen sedan forsatt skriver till (minuteMeter.txt).

scriptet ser ut så här:
#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H:%M:%S")

# Move latest minuteMeter.txt and rename
sudo mv /home/pi/minuteMeter.txt /home/pi/minuteMeter-$DATE.txt

# New empty file
cp /home/pi/minuteMeter.base /home/pi/minuteMeter.txt

-----------------------------
Sedan anropar jag det här scriptet kl.12 varje dag med hjälp av crontab:

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
00 12 * * * /home/pi/minuteMeterLog.sh
Silversurfaren
 
Posts: 7
Joined: Fri Nov 13, 2015 6:12 am
Location: Linköping

Re: Tips: Drifttidsmätare

Postby Leffe » Thu Feb 16, 2017 10:20 am

Silversurfaren wrote:Det finns många sätt att göra de på och min lösning är enkel och byter bara namn på min minuteMeter.txt och lägger datum (DATE) till filnamnet och kopierar sedan en tom fil där enheterna finns angivna (minuteMeter.base) till den fil som funktionen sedan forsatt skriver till (minuteMeter.txt).

scriptet ser ut så här:
#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H:%M:%S")

# Move latest minuteMeter.txt and rename
sudo mv /home/pi/minuteMeter.txt /home/pi/minuteMeter-$DATE.txt

# New empty file
cp /home/pi/minuteMeter.base /home/pi/minuteMeter.txt
k
Hej och tack men jag ser nu att du kör på en RPI , så jag får fortsätta att hoppas på att "hekj " vill och orkar förbarma sej över en lösning :D :D :D :D
-----------------------------
Sedan anropar jag det här scriptet kl.12 varje dag med hjälp av crontab:

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
00 12 * * * /home/pi/minuteMeterLog.sh
Leffe
 
Posts: 66
Joined: Sun Jan 05, 2014 2:45 pm


Return to NexaHome

Who is online

Users browsing this forum: No registered users and 1 guest