Nexahome / Raspberry PI
Re: Nexahome / Raspberry PI
Jag har gjort en NexaHome version enbart för Raspberry Pi:
1) Ladda hem http://nexahome.se/NexaHome_RPi_2.9.6.jar
2) Tag bort allt i Executable fältet i din nuvarande NexaHome och avsluta därefter programmet
3) Starta den nya versionen (2.9.6)
Själv har jag endast konstaterat att JNA kopplingen startar, har inte hunnit testa något mer så tala gärna om för mig om den fungerar och vad som står i Executable fältet.
1) Ladda hem http://nexahome.se/NexaHome_RPi_2.9.6.jar
2) Tag bort allt i Executable fältet i din nuvarande NexaHome och avsluta därefter programmet
3) Starta den nya versionen (2.9.6)
Själv har jag endast konstaterat att JNA kopplingen startar, har inte hunnit testa något mer så tala gärna om för mig om den fungerar och vad som står i Executable fältet.
Henrik | http://easyhomeauto.se
Re: Telldus-Core, Telldus Center och Nexa Home på R-Pi
Om du använder openjdk-7 instället för sexan så fungerar Web-fliken.kornflakez wrote: NexaHomeStarta grafiska gränssnittet (startx) och dubbelklicka på .jar filenCode: Select all
sudo apt-get install openjdk-6-jdk wget http://nexahome.se/NexaHome_2.8.4.jar (ersätt med senaste versionen om det finns en nyare)
Detta startar upp NexaHome. Jag har inte hunnit testa av detta så mycket än, men ett problem som jag verkar få är när jag går in under "web"-fliken.
Väljer jag en sida där så får jag upp ett 20-tal "loading" fönster som går att flytta men inte stänga ner. Men detta har jag inte hunnit felsöka på.
Om det är något ni har upplevt och hittat en lösning på så får ni gärna berätta hur.
Code: Select all
sudo apt-get install openjdk-7-jdk
mkdir -p ~/nexahome
cd ~/nexahome
wget http://nexahome.se/NexaHome_RPi_2.9.6.jar
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Hej,
Jag lyckas inte få igång JNA kopplingen med 2.9.6 heller.. Testar att ta bort allt i executable och sen med 2.9.6 står det /usr/bin/tdtool som vanligt?
//Anders
Jag lyckas inte få igång JNA kopplingen med 2.9.6 heller.. Testar att ta bort allt i executable och sen med 2.9.6 står det /usr/bin/tdtool som vanligt?
//Anders
-
- Posts: 112
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Sweden
- Contact:
Re: Nexahome / Raspberry PI
Hur funkar det med att lägga till enheter/mottagare? Kan man göra det direkt i Nexahome?
Re: Nexahome / Raspberry PI
Nej, du ska använda TelldusCenter, hämta en bugfixad release.Micke-Falo wrote:Hur funkar det med att lägga till enheter/mottagare? Kan man göra det direkt i Nexahome?
http://nexahome.se/NexaHome_RPi_2.9.7.jar
Det är bara NexaHome device grupper du lägger till direkt i NexaHome.
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Konstigt... det funkar ju för mig, vad kan det vara för skillnad?anderssan wrote:Jag lyckas inte få igång JNA kopplingen med 2.9.6 heller.. Testar att ta bort allt i executable och sen med 2.9.6 står det /usr/bin/tdtool som vanligt?
Testa först med den senaste NH versionen.
Code: Select all
mkdir -p ~/nexahome
cd ~/nexahome
wget http://nexahome.se/NexaHome_RPi_2.9.7.jar
Code: Select all
sudo apt-get install libjna-java
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Med 2.9.7 så funkar det som det är tänkt!
Perfekt, tack för hjälpen!
//Anders
Perfekt, tack för hjälpen!
//Anders
Re: Nexahome / Raspberry PI
Jag håller på med Raspberry PI och JNA också med egna projekt men kan inte få JNA att fungera varken med openjdk7 eller nya java8 beta med hard float stöd. Har även installerat libjna-java på PIn men det lirar iaf inte och har nog bankat huvudet tillräckligt i väggen Såg att du i ditt projekt har byggt in JNA direkt i JARen. Kanske skulle prova det också..hekj wrote: Testa först med den senaste NH versionen.Om inte ovanstående fungerar kan du testa följande (som jag inte tycker borde behövas).Code: Select all
mkdir -p ~/nexahome cd ~/nexahome wget http://nexahome.se/NexaHome_RPi_2.9.7.jar
Code: Select all
sudo apt-get install libjna-java
Edit: Kan konstatera att jag bankat huvudet i väggen ännu mer men får verkligen inte JNA att fungera i överhuvudtaget... Notera att detta gäller JNA överlag MEN detta är den enda forum post jag hittat som påvisar att JNA på RPI fungerar och skulle hemskt gärna få lite hjälp
Re: Nexahome / Raspberry PI
Vad är det för projekt och vad får du för slags felmeddelande?Mnemonic wrote:Jag håller på med Raspberry PI och JNA också med egna projekt men kan inte få JNA att fungera varken med openjdk7 eller nya java8 beta med hard float stöd. Har även installerat libjna-java på PIn men det lirar iaf inte och har nog bankat huvudet tillräckligt i väggen Såg att du i ditt projekt har byggt in JNA direkt i JARen. Kanske skulle prova det också..
Edit: Kan konstatera att jag bankat huvudet i väggen ännu mer men får verkligen inte JNA att fungera i överhuvudtaget... Notera att detta gäller JNA överlag MEN detta är den enda forum post jag hittat som påvisar att JNA på RPI fungerar och skulle hemskt gärna få lite hjälp
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Jag lyckas inte få växling mellan Home/Away att köra Mode.bsh. Det går utmärkt att köra scriptet från Action, men vid växling av Mode sker inget. Det fungerade utmärkt innan jag flytta över till Pi och uppgraderade till 3.0.2. Tacksam för tips.
Re: Nexahome / Raspberry PI
Testa att döpa om bsh filen så att namnet bara innehåller små bokstäver.erse wrote:Jag lyckas inte få växling mellan Home/Away att köra Mode.bsh. Det går utmärkt att köra scriptet från Action, men vid växling av Mode sker inget. Det fungerade utmärkt innan jag flytta över till Pi och uppgraderade till 3.0.2. Tacksam för tips.
Mode.bsh --> mode.bsh
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Visst, en lite men nog så betydelsefull detaj. Tackar!
Re: Nexahome / Raspberry PI
Har problem med att få igång temp-grafen i Pi:n. Filen mySensorChart.png skapas inte/uppdateras inte vilket innebär att tempgrafen inte heller gör det.
I Consolen står det:
2013-03-17 21:06:08 The script threw an exception (mypage.bsh): Sourced file: mypage.bsh : Method Invocation SensorChart.addValue : at Line: 159 : in file: mypage.bsh : SensorChart .addValue ( gNdx , year , month , day , hour , minute , d )
Target exception: org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period Sat Mar 16 15:33:00 CET 2013 but the series already contains an observation for that time period. Duplicates are not permitted. Try using the addOrUpdate() method.
Urdrag ur: temp_2013-03-17.txt
mypage.bsh
Tar tacksamt emot hjälp.
I Consolen står det:
2013-03-17 21:06:08 The script threw an exception (mypage.bsh): Sourced file: mypage.bsh : Method Invocation SensorChart.addValue : at Line: 159 : in file: mypage.bsh : SensorChart .addValue ( gNdx , year , month , day , hour , minute , d )
Target exception: org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period Sat Mar 16 15:33:00 CET 2013 but the series already contains an observation for that time period. Duplicates are not permitted. Try using the addOrUpdate() method.
Urdrag ur: temp_2013-03-17.txt
Code: Select all
2013-03-17 00:00 -9,625 19,875
2013-03-17 00:00 -9,625 19,875
2013-03-17 00:01 -9,625 20
2013-03-17 00:02 -9,625 19,9375
2013-03-17 00:08 -9,5625 20
2013-03-17 00:13 -9,3125 20
2013-03-17 00:14 -9,375 20,0625
Code: Select all
car_check_device = "30";
car = false;
car_on = null;
car_minutes = null;
path = "/home/pi/nexahome/";
temp = false;
temp2 = false;
params = getData("mypage.params_");
//echo(params);
var len = Integer.parseInt(params);
for (int ndx = 1; ndx <= len; ndx++) {
param = getData("mypage.param" + ndx + "_");
// echo(param);
if (param.equals("mypage=temp")) {
temp = true;
} else if (param.equals("mypage=temp2")) {
temp2 = true;
} else if (param.equals("mypage=car")) {
car = true;
} else if (param.startsWith("on=")) {
car_on = param.substring("on=".length());
} else if (param.startsWith("minutes=")) {
car_minutes = param.substring("minutes=".length());
}
}
if (car && car_on != null) {
setData("car_on", car_on);
setData("car_minutes", (car_minutes != null ? car_minutes : ""));
deviceOn(car_check_device);
}
if (temp || temp2) {
import java.awt.Color;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.StringTokenizer;
addClassPath(path + "jcommon-1.0.17.jar");
addClassPath(path + "jfreechart-1.0.14.jar");
addClassPath(path + ".");
String[] temp_labels = { "In", "Out" };
String[] temp_colors = { "black", "blue" };
String[] temp2_labels = { "Sensor1", "Sensor2", "Sensor3" };
String[] temp2_colors = { "black", "blue", "yellow" };
int length = 640;
int height = 480;
String title = null;
String output= null;
String[] labels = null;
String[] colors = null;
special_name = null;
if (temp) {
title = "Temperature";
labels = temp_labels;
colors = temp_colors;
special_name = "temp";
} else if (temp2) {
title = "Temperature 2";
labels = temp2_labels;
colors = temp2_colors;
special_name = "temp2";
}
output = path + "mySensorChart_" + special_name + ".png";
SensorChart.initGraph(labels.length, 1);
for (int gNdx = 0; gNdx < labels.length; gNdx++) {
txt = colors[gNdx].toLowerCase();
if ("white".equals(txt)) {
color = Color.white;
} else if ("lightgray".equals(txt)) {
color = Color.lightGray;
} else if ("gray".equals(txt)) {
color = Color.gray;
} else if ("darkgray".equals(txt)) {
color = Color.darkGray;
} else if ("black".equals(txt)) {
color = Color.black;
} else if ("red".equals(txt)) {
color = Color.red;
} else if ("pink".equals(txt)) {
color = Color.pink;
} else if ("orange".equals(txt)) {
color = Color.orange;
} else if ("yellow".equals(txt)) {
color = Color.yellow;
} else if ("green".equals(txt)) {
color = Color.green;
} else if ("magenta".equals(txt)) {
color = Color.magenta;
} else if ("cyan".equals(txt)) {
color = Color.cyan;
} else{
color = Color.blue;
}
SensorChart.initSeries(gNdx, labels[gNdx], color);
}
Calendar cal = Calendar.getInstance();
int back = 1;
cal.add(Calendar.DAY_OF_YEAR, -back);
for (int dNdx = 0; dNdx <= back; dNdx++) {
StringBuffer buf = new StringBuffer();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
File f = new File(path + special_name + "_" + sdf.format(cal.getTime()) + ".txt");
if (f.exists()) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(f));
String line = null;
do {
line = br.readLine();
if (line != null) {
buf.append(line);
buf.append("\n");
}
} while(line != null);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
StringTokenizer st1 = new StringTokenizer(buf.toString(), "\n");
while (st1.hasMoreTokens()) {
StringTokenizer st2 = new StringTokenizer(st1.nextToken().replaceAll("\t\t", "\t?\t"), "\t");
if (st2.hasMoreTokens()) {
String timestamp = st2.nextToken();
Date date = sdf.parse(timestamp, new ParsePosition(0));
if (date != null) {
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int gNdx = 0;
while (st2.hasMoreTokens() && gNdx < labels.length) {
String value = st2.nextToken().replace(',', '.');
if (!value.equals("?")) {
try {
double d = Double.parseDouble(value);
SensorChart.addValue(gNdx, year, month, day, hour, minute, d);
dataAdded = true;
} catch(NumberFormatException nfe) {
// ignore
}
}
gNdx = gNdx + 1;
}
}
}
}
}
cal.add(Calendar.DAY_OF_YEAR, 1);
}
if (dataAdded) {
SensorChart.process("", title, length, height, output);
} else {
echo("No data added to graph!");
}
}
Re: Nexahome / Raspberry PI
Det snabbaste sättet att få igång grafen är helt enkelt att radera dubletter, dvs tag bort en av följande rader:erse wrote:Har problem med att få igång temp-grafen i Pi:n. Filen mySensorChart.png skapas inte/uppdateras inte vilket innebär att tempgrafen inte heller gör det.
I Consolen står det:
2013-03-17 21:06:08 The script threw an exception (mypage.bsh): Sourced file: mypage.bsh : Method Invocation SensorChart.addValue : at Line: 159 : in file: mypage.bsh : SensorChart .addValue ( gNdx , year , month , day , hour , minute , d )
Target exception: org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period Sat Mar 16 15:33:00 CET 2013 but the series already contains an observation for that time period. Duplicates are not permitted. Try using the addOrUpdate() method.
Urdrag ur: temp_2013-03-17.txtmypage.bshCode: Select all
2013-03-17 00:00 -9,625 19,875 2013-03-17 00:00 -9,625 19,875 2013-03-17 00:01 -9,625 20 2013-03-17 00:02 -9,625 19,9375 2013-03-17 00:08 -9,5625 20 2013-03-17 00:13 -9,3125 20 2013-03-17 00:14 -9,375 20,0625
Tar tacksamt emot hjälp.Code: Select all
car_check_device = "30"; car = false; car_on = null; car_minutes = null; path = "/home/pi/nexahome/"; temp = false; temp2 = false; params = getData("mypage.params_"); //echo(params); var len = Integer.parseInt(params); for (int ndx = 1; ndx <= len; ndx++) { param = getData("mypage.param" + ndx + "_"); // echo(param); if (param.equals("mypage=temp")) { temp = true; } else if (param.equals("mypage=temp2")) { temp2 = true; } else if (param.equals("mypage=car")) { car = true; } else if (param.startsWith("on=")) { car_on = param.substring("on=".length()); } else if (param.startsWith("minutes=")) { car_minutes = param.substring("minutes=".length()); } } if (car && car_on != null) { setData("car_on", car_on); setData("car_minutes", (car_minutes != null ? car_minutes : "")); deviceOn(car_check_device); } if (temp || temp2) { import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.StringTokenizer; addClassPath(path + "jcommon-1.0.17.jar"); addClassPath(path + "jfreechart-1.0.14.jar"); addClassPath(path + "."); String[] temp_labels = { "In", "Out" }; String[] temp_colors = { "black", "blue" }; String[] temp2_labels = { "Sensor1", "Sensor2", "Sensor3" }; String[] temp2_colors = { "black", "blue", "yellow" }; int length = 640; int height = 480; String title = null; String output= null; String[] labels = null; String[] colors = null; special_name = null; if (temp) { title = "Temperature"; labels = temp_labels; colors = temp_colors; special_name = "temp"; } else if (temp2) { title = "Temperature 2"; labels = temp2_labels; colors = temp2_colors; special_name = "temp2"; } output = path + "mySensorChart_" + special_name + ".png"; SensorChart.initGraph(labels.length, 1); for (int gNdx = 0; gNdx < labels.length; gNdx++) { txt = colors[gNdx].toLowerCase(); if ("white".equals(txt)) { color = Color.white; } else if ("lightgray".equals(txt)) { color = Color.lightGray; } else if ("gray".equals(txt)) { color = Color.gray; } else if ("darkgray".equals(txt)) { color = Color.darkGray; } else if ("black".equals(txt)) { color = Color.black; } else if ("red".equals(txt)) { color = Color.red; } else if ("pink".equals(txt)) { color = Color.pink; } else if ("orange".equals(txt)) { color = Color.orange; } else if ("yellow".equals(txt)) { color = Color.yellow; } else if ("green".equals(txt)) { color = Color.green; } else if ("magenta".equals(txt)) { color = Color.magenta; } else if ("cyan".equals(txt)) { color = Color.cyan; } else{ color = Color.blue; } SensorChart.initSeries(gNdx, labels[gNdx], color); } Calendar cal = Calendar.getInstance(); int back = 1; cal.add(Calendar.DAY_OF_YEAR, -back); for (int dNdx = 0; dNdx <= back; dNdx++) { StringBuffer buf = new StringBuffer(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); File f = new File(path + special_name + "_" + sdf.format(cal.getTime()) + ".txt"); if (f.exists()) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(f)); String line = null; do { line = br.readLine(); if (line != null) { buf.append(line); buf.append("\n"); } } while(line != null); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); StringTokenizer st1 = new StringTokenizer(buf.toString(), "\n"); while (st1.hasMoreTokens()) { StringTokenizer st2 = new StringTokenizer(st1.nextToken().replaceAll("\t\t", "\t?\t"), "\t"); if (st2.hasMoreTokens()) { String timestamp = st2.nextToken(); Date date = sdf.parse(timestamp, new ParsePosition(0)); if (date != null) { cal.setTime(date); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DAY_OF_MONTH); int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int gNdx = 0; while (st2.hasMoreTokens() && gNdx < labels.length) { String value = st2.nextToken().replace(',', '.'); if (!value.equals("?")) { try { double d = Double.parseDouble(value); SensorChart.addValue(gNdx, year, month, day, hour, minute, d); dataAdded = true; } catch(NumberFormatException nfe) { // ignore } } gNdx = gNdx + 1; } } } } } cal.add(Calendar.DAY_OF_YEAR, 1); } if (dataAdded) { SensorChart.process("", title, length, height, output); } else { echo("No data added to graph!"); } }
Code: Select all
2013-03-17 00:00 -9,625 19,875
2013-03-17 00:00 -9,625 19,875
Henrik | http://easyhomeauto.se
Re: Nexahome / Raspberry PI
Har ersatt befintlig add() metod med den föreslagna addOrUpdate() så att det inte gör något om man har dubletter i sina temp data filer.
Följande programkod är uppdaterad:
http://nexahome.se/SensorChart.class
http://nexahome.se/SensorChart.java
Följande programkod är uppdaterad:
http://nexahome.se/SensorChart.class
http://nexahome.se/SensorChart.java
Henrik | http://easyhomeauto.se