1Wire und IPS 4.0

Theoretisch kannst du mit ser2net den LinkUSB weiterleiten. Ähnlich wie bei den Razberry’s.

paresy

Vielen Dank für die Auskunft.

Sobald der LinkUSB da ist Teste ich das Ganze.

Gruß

Mal ne Frage, muss es unbedingt ein LinkUSB am Pi sein?
Ich mache DS18s(b)20 direkt am GPIO (Heizungs Pi mit IPS als Steuerunge der Heizung) und sende die Daten auch an den PI (Haussteuerung mit IPS, LCN, z-wave und enocean) per json weiter.
Habe aber bis jetzt nur die DS18x20 probiert, dass klappt soweit perfekt.

Hallo tomgr,

es muss nicht unbedingt ein LinkUSB sein:D aber es ist bequem. Nur für DS18x20 Sensoren würde ich sogar ein Pokeys nehmen (habe noch 2 Rumfliegen). Habe aber noch DS2438 mit HIH4030 auf der Platine und für große Tests im Moment wenig Zeit.
Mit LinkUSB hatte ich sehr kurze Testphase. USB Rein —> Sensor angeschlossen —> Läuft. (war sogar ein bisschen Langweilig:))

Raspi mit LinkUSB als Gateway mit ser2net funktioniert auch :smiley:

Meine Einstellung in ser2net.conf. Vielleicht brauch das jemand:)

10002:raw:0:/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03KU5U-if00-port0:9600,NONE,1STOPBIT,8DATABITS

Gruß

Man könnte alternativ auch auf dem Pi owfs installieren, was den LinkUSB unterstützt und dann den Owserver vom IPS abfragen. Dazu hatte ich ein Modul (für die DS18B20) geschrieben. So kann man auch noch anderen Interessenten als IPS Zugriff geben. Ser2net ist ja immer eine 1:1 Verbindung

Tommi

ich nütze owfs auf einem zweiten Pi mit ips… Aus damaliger Unwissenheit wie ich das abfragen sollte… Da es aber derart zuverlässig läuft, belasse ich das so… :wink:

Gesendet von meinem Redmi Note 2 mit Tapatalk

Hi, ich bin der Meinung, braucht es alles nicht.
Ich habe in der Conig.txt nur 1wire aktiviert :

gpu_mem=16
dtoverlay=sdhost
dtoverlay=w1-gpio,gpiopin=4,pullup=on

Schon fliegen die Daten ins Filesystem, und ich kann abrufen.
Beispiel:

<?
$id = IPS_GetParent($_IPS['SELF']);
$id2= IPS_GetParent($id);
$id3= IPS_GetObjectIDByName("GPIO Temperatur", $id2);
//------------------------------------------------------------------------------
 if($_IPS['SENDER'] == "Execute")                // nur wenn bei "Ausführen"
 {
   CreateVariableByName($id3, "onewireId", 3);
   CreateVariableByName($id3, "onewirezaehler", 1);
   $onewireID = IPS_GetObjectIDByName("onewireId", $id3);
   SetValue($onewireID, "");
   $vid = CreateVariableByName($_IPS['SELF'], "Running", 0);
   $eid = CreateEventIDByName($_IPS['SELF'], "StartStop", 0);
   IPS_SetEventActive($eid, true);
   IPS_SetEventTrigger($eid, 0, $vid);
   IPS_SetEventScript($eid, $_IPS['SELF']);
   $zaehler = intval(exec('cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count'));
   $onewirezaehlerID = IPS_GetObjectIDByName("onewirezaehler", $id3);
   SetValue($onewirezaehlerID, $zaehler);

	$datei = file("/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves");
	$i=1;
	foreach($datei AS $dallas_id)
   {
	   $ds_id[$i]= $dallas_id;
      $wire = GetValue($onewireID);
      $wire = "".$wire." ".$ds_id[$i];
  	   SetValue($onewireID, $wire);
		$i++;
   }
 }
//------------------------------------------------------------------------------
// if($_IPS['SENDER'] == "TimerEvent")             //
$onewireID = IPS_GetObjectIDByName("onewireId", $id3);
$onewirezaehlerID = IPS_GetObjectIDByName("onewirezaehler", $id3);
$zaehler = GetValue($onewirezaehlerID);
//$zaehler = intval(exec('cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count'));

$wire = GetValue($onewireID);
$ds_id = explode(" ", $wire);
	for ($i = 1; ; $i++)
	{
	   if ($i > $zaehler) {
	        break;
      }
      $ds_id[$i]= trim($ds_id[$i]);
		$temp = exec('cat /sys/bus/w1/devices/'.$ds_id[$i].'/w1_slave |grep t=');
		$crc = exec('cat /sys/bus/w1/devices/'.$ds_id[$i].'/w1_slave | grep crc | sed "s/^.*\(...\)$/\1/"');
		$temp = explode('t=',$temp);
      //The power-on reset value of the temperature register is +85°C
		if($crc =="YES" and $temp[1] !== "-62" and $temp[1]  !== "85000") //Fehler raus, -1.2 °C ,85°C und CRC
		{ 
			$temp = $temp[1] / 1000;
			$temp = round($temp,2);
	  	   $id = CreateVariableByName($id3, $ds_id[$i], 2);
		   SetValue($id, $temp);
	   }
	}
//------------------------------------------------------------------------------
 if($_IPS['SENDER'] == "Variable")
 {
  if($_IPS['VALUE'])
  {
   IPS_SetScriptTimer($_IPS['SELF'], 10);         // Sekunden-Takt
  } else {
   IPS_SetScriptTimer($_IPS['SELF'], 0);
  }
 }
//------------------------------------------------------------------------------
//##############################################################################
function CreateVariableByName($id, $name, $type)
{
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
   }
   return $vid;
}
//##############################################################################
function CreateEventIDByName($id, $name, $type)
{
   $eid = @IPS_GetEventIDByName($name, $id);
   if($eid===false) {
      $eid = IPS_CreateEvent($type);
      IPS_SetParent($eid, $id);
      IPS_SetName($eid, $name);
   }
   return $eid;
}
?>

Das habe ich für meine Heizungssteuerung gemacht, die jetzt seit Nov15 ohne Störung per IPS läuft. Und da bin ich schmerzfrei, und habe immer die "testing Version auf dem Pi). Die Daten zum Haus IPS werden per json gesendet.