Hi,
habe den P4d mit Deinem Script auf einem Beaglebone Black problemlos installiert.
BBB mit Debian statt Angstrom.
Danke, Ihr beiden.
Es gibt 4.961 Antworten in diesem Thema, welches 1.532.901 mal aufgerufen wurde. Der letzte Beitrag () ist von ranseyer.
Hi,
habe den P4d mit Deinem Script auf einem Beaglebone Black problemlos installiert.
BBB mit Debian statt Angstrom.
Danke, Ihr beiden.
fein das es bei euch läuft :)!!
Zitathorchi sein script installiert
nur um Missverständnissen vorzubeugen, Skript ist keines von mir, nur das Zeug im git, also der p4d und das PHP
Hier Preview:
Achtung, langsames Bauern-DSL und bitte nicht alle auf einmal.
Der BBB wäre eigentlich schnell genug, im LAN sieht man, wie schnell die Charts aufgebaut werden.
horchi: Habe die Puffersensoren wie der bashy am One-Wire (ASCII-Datei, s. o.). Könntest Du dem p4d lernen, die einzulesen? Möchte noch ein Thermoelement im Brennraum über den SPI-Bus des BBB einlesen. Dessen Wert steht dann auch in einer ASCII-Datei.
Magst Du ein ASCII-Dateiformat zum Einlesen spezifizieren, wo dann Sensorname/Wert o.ä. drinsteht?
Servus
--
Markus
sieht prima aus bei dir.
Untersützung für die One-Wire Sensoren kommt, hab mir schon welche bestellt
Gibt schon eine weitere Anfrage für externe Sensoren im ASCII Format von Philipp, ich möchte nicht zu viele Sonderlocken einbauen. Ich lasse mir zusätzlich zu den One-Wire noch EIN weiteres generisches Interface einfallen, entweder über ASCII von einer Seriellen Schnittstelle oder vermutlich besser da noch allgemeiner einsetzbar via Filesystem
BTW: für die vordefinierten Charts hast du noch wenige Sensoren aktiv
Grüße Jörg
Alles anzeigensieht prima aus bei dir.
BTW: für die vordefinierten Charts hast du noch wenige Sensoren aktiv
Grüße Jörg
Jörg, für die Charts braucht's die Nummern. Steht zwar "s. Aufzeichnung", dort sind aber nur Namen und Werte, keine Nummern. Wo finde ich die Zuordnungstabelle?
ups stimmt ;), das ist noch ein offener Punkt, da kommt bestimmt noch ein Knopf mit einer Übersicht oder etwas ähnliches hin.
Wenn du in config.php debug auf 1 stellst siehst du in Aufzeichnung die Sensor ID
Hallo Jörg,
konnte mit deinen Angabe den p4d jetzt kompilieren und installieren.
Warte jetzt allerdings darauf, dass mein Raspi kommt uns setz den dann nochmal komplett neu auf.
Ich berichte!
Außentemperatur ist immer 0°C.
http://akdy.dyndns.org/main.php
Auf COM2 zur Zeit 1,5°C.
http://acady.tipido.net/s4-status.html
Fehler vom p4d im Log?
Das p4 Kommandozeilentool (hab ich zum testen geschrieben) wird mit dem p4d mit installiert.
Damit kann man so die Stammdaten Sensoren abfragen:
so filterst du die Ausgabe auf den Außentemperaturfühler:
root@raspberrypi:~# p4 values -d /dev/ttyUSB1 | grep -i Auß | head -1
61) 0x0004 2 '°' (0002) 'Außentemperatur'
der zweite Wert ist die Adresse des Fühlers und der dritte der Faktor, mit der Adresse nun so den Wert Abfragen:
dann durch den Faktor teilen ergibt bei mir 3°C
das Device beim Aufruf musst du ggf. anpassen oder falls ttyUSB0 kannst du es auch ganz weglassen
Danke, melde mich von daheim heute abend, wenn ich ssh zum BBB habe.
114) 0x0004 2 '°' (0002) 'Außentemperatur'
root@beaglebone:/var/log# p4 getv -a 4 -d /dev/ttyUSB0
value 0x4 is 0
root@beaglebone:/var/log# tail -f syslog
Jan 29 18:59:51 beaglebone p4d: Processed 24 samples, state is 'Zünden Warten'
Jan 29 18:59:59 beaglebone p4d: Checking state ...
Jan 29 19:00:09 beaglebone p4d: Checking state ...
Jan 29 19:00:19 beaglebone p4d: Checking state ...
Jan 29 19:00:22 beaglebone apache2: p4: requesting p4d-state with 0, ''
Jan 29 19:00:22 beaglebone p4d: Processing WEBIF job 1388 'p4d-state:0x0000/'
Jan 29 19:00:23 beaglebone p4d: Processing WEBIF job 1388 done with 'success:19:00:49#0.1.6#4 Tagen 19 Stunden' after 1 seconds
Jan 29 19:00:23 beaglebone apache2: p4: requesting s3200-state with 0, ''
Jan 29 19:00:23 beaglebone p4d: Processing WEBIF job 1389 's3200-state:0x0000/'
Jan 29 19:00:23 beaglebone p4d: Processing WEBIF job 1389 done with 'success:Wednesday, 29. Jan. 2014 19:00:01#35#Zünden Warten#Winterbetrieb' after 0 seconds
Jan 29 19:00:29 beaglebone p4d: Checking state ...
Jan 29 19:00:39 beaglebone p4d: Checking state ...
hmmm da liefert die Heizung 0 zurück.
Kommen bei der values Abfrage weitere Fühler für die Außentemperatur mit anderen Adressen?
Ansonsten ruf das getv nochmal mit zusätzlich -l 4 auf, da siehst du was genu mit der Heizung kommuniziert wird
root@beaglebone:/var/www# p4 values -d /dev/ttyUSB0 |grep Au
114) 0x0004 2 '°' (0002) 'Außentemperatur'
121) 0x0004 2 '°' (0002) 'Außentemperatur'
126) 0x0004 2 '°' (0002) 'Außentemperatur'
131) 0x0004 2 '°' (0002) 'Außentemperatur'
136) 0x0004 2 '°' (0002) 'Außentemperatur'
141) 0x0004 2 '°' (0002) 'Außentemperatur'
146) 0x0004 2 '°' (0002) 'Außentemperatur'
151) 0x0004 2 '°' (0002) 'Außentemperatur'
156) 0x0004 2 '°' (0002) 'Außentemperatur'
161) 0x0004 2 '°' (0002) 'Außentemperatur'
166) 0x0004 2 '°' (0002) 'Außentemperatur'
171) 0x0004 2 '°' (0002) 'Außentemperatur'
176) 0x0004 2 '°' (0002) 'Außentemperatur'
181) 0x0004 2 '°' (0002) 'Außentemperatur'
186) 0x0004 2 '°' (0002) 'Außentemperatur'
191) 0x0004 2 '°' (0002) 'Außentemperatur'
196) 0x0004 2 '°' (0002) 'Außentemperatur'
201) 0x0004 2 '°' (0002) 'Außentemperatur'
root@beaglebone:/var/www# p4 getv -a 4 -l 4 -d /dev/ttyUSB0
19:28:14,063 Opening '/dev/ttyUSB0' succeeded!
19:28:14,171 -> 02 FD 00 0B 22 54 65 73 63 68 74 20 3B 2D 29 1C ...."Tescht ;-).
19:28:14,178 got 02
19:28:14,181 got FD
19:28:14,187 got 00
19:28:14,189 got 0B
19:28:14,192 got 22
19:28:14,193 got 54
19:28:14,194 got 65
19:28:14,195 got 73
19:28:14,196 got 63
19:28:14,198 got 68
19:28:14,199 got 74
19:28:14,200 got 20
19:28:14,201 got 3B
19:28:14,203 got 2D
19:28:14,204 got 29
19:28:14,209 got 1C
19:28:14,212 <- 02 FD 00 0B 22 54 65 73 63 68 74 20 3B 2D 29 1C ...."Tescht ;-).
19:28:14,226 -> 02 FD 00 03 30 00 04 58 ....0..X
19:28:14,230 got 02
19:28:14,236 got FD
19:28:14,238 got 00
19:28:14,239 got 03
19:28:14,241 got 30
19:28:14,243 got 00
19:28:14,244 got 00
19:28:14,246 got 54
19:28:14,247 <- 02 FD 00 03 30 00 00 54 ....0..T
19:28:14,260 value 0x4 is 0
19:28:14,261 Closing io device
Wie bei mir, kommt in der Liste öfter vor (warum auch immer) jedoch nur eine Adresse.
Die Heizung liefert eindeutig 0, die 00 00 vor der 45.
Kann es sein das der Fühler an einem anderen als dem 'normalen' Anschluss hängt? Ansonsten mal die Steuerung resetten?
Ich bin jetzt erst mal unterwegs ..
Fühler funktioniert ja über COM2 und liegt am Standard-Anschluss.
Reset morgen...
Wenn der p4d länger (>5min) läuft, braucht der mysqld 35-45% der CPU auf dem BBB (mit "top" und "xosview" gemessen). Speicherverbrauch normal.
Diese Last bleibt dann konstant. Mir kommt das ziemlich hoch vor. Kann man das genauer untersuchen und ggf. eingrenzen?
hey also mein Odroid ist er 96% Idle
bei mir zeiht der mysqld immer um die 3%-5% und ab und an mal 10% egal ob der p4d läuft oder nicht. Geht die Last beim beenden des p4d runter?
Wie hast du denn interval und stateCheckInterval stehen? Hilft es wenn du stateCheckInterval erhöhst?
Das einzige was er alle 50ms macht ist ein ganz billiger select auf die jobs Tabelle um nachzusehen ob eine Anfrage vom WEBIF ansteht.
Ggf. passt bei dir mit den Indices noch nicht.
Was sagt denn
mysql> explain select * from jobs where state = 'P';
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | jobs | ALL | NULL | NULL | NULL | NULL | 465 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
Ups, jetzt wo ich es sehe :o wenn viel in der Tabelle ist kann es schon last erzeugen da fehlt ein Index auf State. Wobei die Tabelle nur die Requests der letzten 2 Tage enthält, der Rest wir automatisch weg geräumt.
mach mal bitte:
danach sollte es so ausschauen:
mysql> explain select * from jobs where state = 'P';
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
| 1 | SIMPLE | jobs | ref | idxState | idxState | 6 | const | 1 | Using where |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
bin gespannt ob es hilft. Ich baue das anlegen dieses Indizes in den p4d.
Jörg
Ja, das war's.
Musste noch "connect" rausfinden...
mysql> connect p4
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Connection id: 170
Current database: p4
mysql> explain select * from jobs where state = 'P';
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | jobs | ALL | NULL | NULL | NULL | NULL | 1980 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.01 sec)
Alles anzeigen
mysql> create index idxState on jobs(state);
Query OK, 0 rows affected (1.33 sec)
Records: 0 Duplicates: 0 Warnings: 0
;) mysql> explain select * from jobs where state = 'P';
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
| 1 | SIMPLE | jobs | ref | idxState | idxState | 6 | const | 1 | Using where |
+----+-------------+-------+------+---------------+----------+---------+-------+------+-------------+
1 row in set (0.00 sec)
mysqld jetzt zwischen 1,3 und 1,6%.
okay, hab den Index in den Code übernommen, plus noch einen auf 'requestat', nicht das der Cleanup der Tabelle am Ende noch unnötige Last erzeugt.
Ah connect kannte ich noch nicht, ich verwende immer use (vermutlich das selbe) oder gehe direkt so drauf:
Dafür hab ich auch einen Alias:
damit passt auch gleich das charset, das will man ja nicht immer tippen müssen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!