Link zur Hauptseite des Forums

LotharGehlhaar - Teichbauforum

DAS informative Forum der Koi-Szene
Link zur Enzyklopaedie
Aktuelle Zeit: Di 20.Mai 2025 12:36

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1114 Beiträge ]  Gehe zu Seite Vorherige  1 ... 66, 67, 68, 69, 70, 71, 72 ... 112  Nächste
Autor Nachricht
BeitragVerfasst: So 10.Mai 2015 13:48 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Hallo Paul,

Fischkopf hat geschrieben:
Wollte eine Aktive-Rückmeldung bauen!!!!

Ich bin auf der Suche in Deinen Skripts, wo Du erstmals den Output der Relaiskarte ausliest.

Es wird nicht ausgelesen, vielmehr merkt sich der Raspi den zuletzt eingestellten Schaltzustand.

Fischkopf hat geschrieben:
Code:
/sys/bus/w1/devices/29-0000000c5d54/output


Dort steht das Aktuelle Byte in Latin-1 Schreibweise „ÿ“ für 255 kodiert, oder z.B. ú für 250 kodiert.

Dort steht ein Byte drin, nicht mehr und nicht weniger als diese Nullen und Einsen.
Es liegt jetzt an Dir, wie Du das in Deiner Sichtweise siehst. Das Byte als Latin-1, als UTF-8 oder irgendeine andere Textcodierung anzusehen, ist an dieser Stelle nicht zielführend. Wir müssen die Nullen und Einsen einzeln ansehen, als Schaltzustände der Relaiskarte. Eigentlich dürften wir das Byte auch nicht als Zahl ansehen.

Willst Du einen einzelnen Zustand auslesen, musst Du Dir die entsprechende Stelle ansehen. Die PHP-Befehle dazu findest Du in der Funktion cKarteDS2408Aktor::Get() in meiner Software. (Hier wird allerdings das abgespeicherte Byte analysiert, aber die Schritte sind dieselben.)

In Zeile 33 wird das Byte ausgelesen. Du müsstet den Inhalt der Datei auslesen. In Zeile 34 wird geprüft, ob das interessante Bit 0 oder 1 ist.

Nehmen wir an, Du interessierst Dich für den Zustand von Relais 3.
$potenz = pow(2, 3); // Errechnet für unser Beispiel den Wert 8, also 0000 1000 .
$zustand = $Byte & $potenz ; // Bitweises UND durchführen.

In der Variable $zustand werden 7 Bits auf jeden Fall Null sein. Wenn in unserem Byte das interessante Bit 1 ist, dann wird das Ergebnisbit ebenso den Wert 1 bekommen. Andernfalls ist auch das achte Bit gleich Null. Wenn das Relais 3 untersucht wird, kann das Ergebnis in Variable $zustand demnach nur 0 oder 8 sein.

Den Relaiszustand zu ermitteln, ist nun einfach. Ist $zustand == 0 , dann war das untersuchte Bit gleich Null. Ist das Ergebnis größer als 0, dann stand eine 1 im Bit.

Diese Einzelschritte findest Du in Zeile 34 des Codes in einer einzigen Zeile vereinigt. Hier wird nicht erst ein Zwischenergebnis in den Variablen $potenz und $zustand zwischengespeichert.



Nebenbei bemerkt: Inzwischen habe ich Dir für den Zweig der Schaltkontakte eine Schreibberechtigung eingetragen. Wenn ich alles richtig gemacht habe, spricht also nichts mehr dagegen, dass Du das fertige Skript comittest und damit eine neue Revision heraus gibst. Hier steht alles erläutert:
http://svnbook.red-bean.com/de/1.7/svn. ... cdamentals



Pfiffikus,
der noch eine Schreibberechtigung für Dennis und für Bernhard einrichten muss


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: So 10.Mai 2015 15:31 

Cash on hand: Locked
Pfiffikus hat geschrieben:
Hallo Paul,

Fischkopf hat geschrieben:
Wollte eine Aktive-Rückmeldung bauen!!!!

Ich bin auf der Suche in Deinen Skripts, wo Du erstmals den Output der Relaiskarte ausliest.

Es wird nicht ausgelesen, vielmehr merkt sich der Raspi den zuletzt eingestellten Schaltzustand.


Besten Dank Gunter :wink:

das habe ich bemerkt und dort wollte ich ansetzen :roll:
Du speicherst den Sollzustand der Relais in der Preferences gleich SOLLZUSTAND

Speichern des Status der Relais in preferences:
prefID: 42 prefName: AKTOR_29-0000000c5d54 prefWert: 255 bei Relais 0-0 An 1-8 Aus
* prefWert: 254 bei Relais 1-1 An 2-8 Aus
* prefWert: 252 bei Relais 1-2 An 3-8 Aus
* prefWert: 253 bei Relais 2-2 An 1+3-8 Aus
* prefWert: 248 bei Relais 1-3 An 4-8 Aus

Was passiert wenn z.B. die CPU-Auslastung durch das Versenden einer E.Mail 100% hat und der Schaltbefehl nicht umgesetzt wird :?

Der Istzustand steht in der /sys/bus/w1/devices/29-0000000c5d54/output gleich ISTZUSTAND
habe nun auch über den Umweg das gegenstück zu chr($iByte) gefunden ord($Textoutput)

$dh = fopen("/sys/bus/w1/devices/".$aKenn[0]."/output", "w");
$Textoutput = file_get_contents("/sys/bus/w1/devices/".$aKenn[0]."/output");
fclose($dh);

echo $Textoutput . '<br>'; ú
echo ord($Textoutput) . '<br>'; 250

Mal schauen wie ich das jetzt in Deine Berechnung vertüdeln kann.

1. Den Befehl:
Code:
$dh = fopen("/sys/bus/w1/devices/".$aKenn[0]."/output", "w");
fwrite($dh, chr($iByte));
fclose($dh);

solange wiederholen bis Soll = Istzustand

2. für eine einfache Rückmeldung:
Die Hintergrundfarben Rot/Grün ändern = Istzustand
Schaltbutton verändern = Sollzustand

3. für eine Aktive-Rückmeldung einen zweiten DS2408 an die Ausgänge der Relais bzw. Schütze verschalten und den dann auslesen.
Bild

Nebenbei bemerkt: Heute scheint die Sonne für die Mütter :love:


Nach oben
  
 
BeitragVerfasst: So 10.Mai 2015 18:07 

Cash on hand: Locked
Pfiffikus hat geschrieben:
Hallo Paul,

Nebenbei bemerkt: Inzwischen habe ich Dir für den Zweig der Schaltkontakte eine Schreibberechtigung eingetragen. Wenn ich alles richtig gemacht habe, spricht also nichts mehr dagegen, dass Du das fertige Skript comittest und damit eine neue Revision heraus gibst. Hier steht alles erläutert:
http://svnbook.red-bean.com/de/1.7/svn. ... cdamentals


Hallo Zusammen,
ich hatte den Zweig der Schaltkontakte schon in meinem Zweig "Fischkopf" unter steuerung - Revision 255: /zweige/Fischkopf/schaltkontakt kopiert aus steuerung - Revision 255: /zweige/schaltkontakt und mit der schaltkontakt.py comittet "hochgeladen".
Die Berechtigungen für den Zweig der Schaltkontakte funzen auch Gunter habe den schaltkontakt.py dort auch eingefügt!!!

Nun fehlt noch das:
Dateianhang:
lö1jpg.jpg


Gunter was ich aber noch nicht ganz verstanden habe, das Subversion Programm lauft ja unter z. B. Windows die einzufügende Datei habe ich z. B mit Notepad-plus-plus auf Windows-ebene erstellt und hochgeladen.
Wie kann ich dann die Linux Eigenschaften und Rechte im Vorfeld auf Windows-ebene berücksichtigen.
Dateianhang:
lö2jpg.jpg


Nach oben
  
 
BeitragVerfasst: Fr 15.Mai 2015 0:22 

Cash on hand: Locked
Pfiffikus hat geschrieben:
Hallo Paul,


In Zeile 33 wird das Byte ausgelesen. Du müsstet den Inhalt der Datei auslesen. In Zeile 34 wird geprüft, ob das interessante Bit 0 oder 1 ist.

Nehmen wir an, Du interessierst Dich für den Zustand von Relais 3.
$potenz = pow(2, 3); // Errechnet für unser Beispiel den Wert 8, also 0000 1000 .
$zustand = $Byte & $potenz ; // Bitweises UND durchführen.

In der Variable $zustand werden 7 Bits auf jeden Fall Null sein. Wenn in unserem Byte das interessante Bit 1 ist, dann wird das Ergebnisbit ebenso den Wert 1 bekommen. Andernfalls ist auch das achte Bit gleich Null. Wenn das Relais 3 untersucht wird, kann das Ergebnis in Variable $zustand demnach nur 0 oder 8 sein.

Den Relaiszustand zu ermitteln, ist nun einfach. Ist $zustand == 0 , dann war das untersuchte Bit gleich Null. Ist das Ergebnis größer als 0, dann stand eine 1 im Bit.

Diese Einzelschritte findest Du in Zeile 34 des Codes in einer einzigen Zeile vereinigt. Hier wird nicht erst ein Zwischenergebnis in den Variablen $potenz und $zustand zwischengespeichert.


Hallo Gunter,
das hast Du mal wieder gut erläutert!
Das ganze funktioniert jetzt auch, aber nicht auf Anhieb, da Du mir eine kleine Rechen falle eingebaut hast, die ich natürlich übernommen habe.

In Zeile 33 wird das Byte ausgelesen. Du müsstet den Inhalt der Datei auslesen. In Zeile 34 wird geprüft, ob das interessante Bit 0 oder 1 ist.

Nehmen wir an, Du interessierst Dich für den Zustand von Relais 3.
$potenz = pow(2, 3); // Errechnet für unser Beispiel den Wert ]8, also 0000 1000 .
$zustand = $Byte & $potenz ; // Bitweises UND durchführen.

In Zeile 33 wird das Byte ausgelesen. Du müsstet den Inhalt der Datei auslesen. In Zeile 34 wird geprüft, ob das interessante Bit 0 oder 1 ist.

Nehmen wir an, Du interessierst Dich für den Zustand von Relais 3. fängt ja bei 29-0000000c5d54+0 an, also Relais 2 dann 29-0000000c5d54+2
$potenz = pow(2, 2); // Errechnet für unser Beispiel den Wert 4, also 0000 0100 .
$zustand = $Byte & $potenz ; // Bitweises UND durchführen.

$aKenn[0] = "29-0000000c5d54";
$aKenn[1] = "2"; // für Relais 3
$Byte = "255"; // alle Relais Aus

$potenz = pow(2, $aKenn[1]);
echo ($potenz) . '<br>'; 4

$zustand = $Byte & $potenz;
echo ($zustand) . '<br>'; 4

if ($zustand == 0) {print("EIN");}

if ($zustand > 0) {print("AUS");} AUS

oder:

$res = (($Byte & pow(2, $aKenn[1])) > 0)? 1:0;

echo ($res) . '<br>'; 1

if ($res == 0) {print("EIN");}

if ($res > 0) {print("AUS");} AUS

Gegenprobe:


$aKenn[1] = "2"; // für Relais 3
$Byte = "251"; // nur Relais 3 Ein

$potenz = pow(2, $aKenn[1]);
echo ($potenz) . '<br>'; 4

$zustand = $Byte & $potenz;
echo ($zustand) . '<br>'; 0

if ($zustand == 0) {print("EIN");} EIN

if ($zustand > 0) {print("AUS");}

oder:

$res = (($Byte & pow(2, $aKenn[1])) > 0)? 1:0;

echo ($res) . '<br>'; 0

if ($res == 0) {print("EIN");} Ein

if ($res > 0) {print("AUS");}

Soll keine Kritik sein, nur als Hilfe für die anderen Freaks. :throw:
Besten Dank noch Mals :hallo:
Habe mich da auch selber verhauen und noch mal Berichtigt Gunter :banghead:


Zuletzt geändert von Fischkopf am Fr 15.Mai 2015 9:07, insgesamt 1-mal geändert.

Nach oben
  
 
BeitragVerfasst: Fr 15.Mai 2015 1:02 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Hallo Paul,

Fischkopf hat geschrieben:
Nehmen wir an, Du interessierst Dich für den Zustand von Relais 3.
$potenz = pow(2, 3); // Errechnet für unser Beispiel den Wert ]8, also 0000 1000 . Da kommt dann Wert 16, also 0001 0000 raus


also ich finde da erstmal nichts Merkwürdiges.

2³ = 2*2*2 = 8


Pfiffikus,
der nicht weiß, wie Du auf 16 gekommen bist


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Fr 15.Mai 2015 9:20 

Cash on hand: Locked
Pfiffikus hat geschrieben:
Hallo Paul,

also ich finde da erstmal nichts Merkwürdiges.

2³ = 2*2*2 = 8


Pfiffikus,
der nicht weiß, wie Du auf 16 gekommen bist


Hallo Gunter,
weiß ich auch nicht evtl. war es die zu späte Stunde oder :banghead:
Ich habe es oben noch mal Berichtigt

Puzelspieler mit der Bitte das zu Entschuldigen !!! :pray:


Nach oben
  
 
BeitragVerfasst: Do 21.Mai 2015 22:53 

Cash on hand: Locked
Fischkopf hat geschrieben:
Ich wollte eine Aktive-Rückmeldung bauen!!!!

Mal schauen wie ich das jetzt ......vertüdeln kann.

1. Den Befehl:
Code:
$dh = fopen("/sys/bus/w1/devices/".$aKenn[0]."/output", "w");
fwrite($dh, chr($iByte));
fclose($dh);

solange wiederholen bis Soll = Istzustand

2. für eine einfache Rückmeldung:
Die Hintergrundfarben Rot/Grün ändern = Istzustand
Schaltbutton verändern = Sollzustand

3. für eine Aktive-Rückmeldung einen zweiten DS2408 an die Ausgänge der Relais bzw. Schütze verschalten und den dann auslesen.
Bild


Hallo ich habe die Regenzeit genutzt um eine Aktive-Rückmeldung zubauen.

Neben bei habe ich dabei die Befehle Get und function in PHP besser kennen bzw. verstehen gelernt.
Hier das Ergebnis:
Dateianhang:
Rückmeldung.jpg


Alles in PHP gepuzzelt aber ohne Datenbank bzw. den MySQL, dafür habe ich eine Datei Byte.txt genutzt das ist alles.

Das xByte aus state Rückmeldung vom externen DS2408 wird ausgelesen:

/// Relais HTML Ausgabe State externer DS2408 Aktor $xByte Rückmeldung LED-Anzeigen
$dh = fopen("/sys/bus/w1/devices/".$aKennex[0]."/state", "r");
$aByte = file_get_contents("/sys/bus/w1/devices/".$aKennex[0]."/state");
$xByte = ord($aByte) . '<br>';
fclose($dh);

und in den LED rechts neben den Buttons angezeigt.

Das zByte aus state Rückmeldung von der Relaiskarte wird ausgelesen:

/// Relais HTML Ausgabe State $zByte Rückmeldung Hintergrund-Farbe
$dh = fopen("/sys/bus/w1/devices/".$aKenn[0]."/state", "r");
$stByte = file_get_contents("/sys/bus/w1/devices/".$aKenn[0]."/state");
$zByte = ord($stByte) . '<br>';
fclose($dh);

und als Rückmeldung Hintergrund-Farbe an den Buttons angezeigt.

Das iByte aus der Datei byte.txt wird ausgelesen:

/// Relais HTML Ausgabe byte.tx Rückmeldung Hintergrund-Farbe Beschriftung
$dh = fopen("/var/www/teichmonitor/1wirekarte/byte.txt", "r");
$iByte = file_get_contents("/var/www/teichmonitor/1wirekarte/byte.txt");
fclose($dh);

und als Rückmeldung Hintergrund-Farbe an der Beschriftung (Relais 0...7) angezeigt.

Alle drei Byte werden verglichen und das Schreiben bzw. Lesen wiederholt bis alle gleich sind!
Das kommt aber nur vor wenn zwischen Schreiben und Lesen nicht ein paar msec. gewartet wird.

Die 1 Wire Busteilnehmer (Relaiskarte und externer DS24089) werden auch mittels Text und LED- Anzeige überwacht.

Hier die Hardware im Testaufbau, war kein großer Aufwand wenn ich mir eine SMD-Adapter Platine besorgt hätte.

Dateianhang:
Rückmeldung1.jpg


Verschaltung wie oben dargestellt aber mit 100K Widerstände!!

Nochmals besten Dank an Gunter für die Erklärung der Byte - Berechnung :hallo:
738,49


Nach oben
  
 
 Betreff des Beitrags: Werbung, um Taler einzunehmen
Verfasst: Di 20.Mai 2025 12:36 
Online
Expertin
Benutzeravatar

Registriert: Mo 05.Dez 2005 19:01
Cash on hand:
immer zu wenige Taler

Beiträge: nur ein paar
Wohnort: Koi-Schnack
Anzeige:

_________________
Wenn du einen Monat lang ein werbefreies Forum willst, klicke hier und überweise mir 100 Taler!
Wenn du mich im Koi-Schnack etwas fragen möchtest, klicke hier!


Nach oben
 Profil Private Nachricht senden  
 
BeitragVerfasst: Mo 25.Mai 2015 16:19 
Offline
Anonymer User

Registriert: Mo 25.Mai 2015 15:46
Cash on hand:
8,52 Taler

Beiträge: 5
Wow, pfiffige Idee! Ich werde mir wahrscheinliche eine fertige Lösung kaufen: http://w3.siemens.com/mcms/programmable ... fault.aspx oder die App von OASE.


Nach oben
 Profil  
 
BeitragVerfasst: Fr 19.Jun 2015 16:22 

Cash on hand: Locked
Hallo Gunter und Co.,
ich hoffe mal das Thema hier ist nicht eingeschlafen :?

Ich benötige Hilfe zum Thema: 1-Wire Bus Grundlagen.

In der Vergangenheit auf dem Breadboard im Versuchsaufbau war fast alles möglich ca. 15 DS18b20 direkt gesteckt oder mit kurzen Ltg. Relaiskarte usw.

Aber am Teich bzw. Filter bekomme ich keinen vernümftigen 1Wire-Bus mit mehr als 4 St. (DS18b20 mit 3m. Zuleitung) sowie mein DS2408 zur Rückmeldung und ein DS2408 in der Relaiskarte.

Kommt noch ein Sensor dabei, wird der kürzeste (die Relaiskarte) raus geworfen.

Ich habe mir einen Pi. B+ zerschossen da ich die 5V. Versorgungsspannung für den W1-Bus über ein BTE13-001
Link zum Video
extern eingespeist habe, dabei habe ich nur die GND verbunden.
Der BTE13-001 hat seine Spannung aus einer 24 Vdc 240 Va. Stromversorgung bezogen.
EIGENTLICH hätte da nichts passieren dürfen. :pillepalle:

Hier mal mein Beispiel:
Dateianhang:
1Wire-Bus.jpg


Zur Zeit bekomme ich selbst auf dem Breadboard nur die 4 St. (DS18b20 mit 3m. Zuleitung) sowie die 2 St. DS2408 ohne die 3,5 m Verbindung nicht immer vernünftig am klappen!

Laut: Linear-Technologie mit Abzweigen:
Kurze Abzweigungen von bis zu 3 m Länge sind problemlos möglich,mit bis zu 20 Slaves.

Wie Habt Ihr Euren 1Wire-Bus für die DS18b20 verschaltet?

Änderung:
Muss hier wirklich die Linear- Struktur eingehalten werden und künstliche Abzweige hergestellt werden.
Sprich zwischen jedem Fühler 3m. Leitung Abzeig, 3m. Leitung Abzeig usw. ???
Ich wollte mir das zerstückeln der Leitung ersparen, deshalb Meine Frage.


Nach oben
  
 
BeitragVerfasst: Fr 19.Jun 2015 19:38 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Fr 02.Jan 2009 9:47
Cash on hand:
1.406,90 Taler

Beiträge: 6047
Wohnort: Lappersdorf
Hallo Paul,
Bei mir hängen nur 4 Sensoren dran und funktioniert gut.

_________________
Gruß Robert

www.koifutterhandel.de


Nach oben
 Profil userposition on geomap  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1114 Beiträge ]  Gehe zu Seite Vorherige  1 ... 66, 67, 68, 69, 70, 71, 72 ... 112  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de