Pokey56E LCD ansteuern

Mit der super Hilfe von Helmut und Uwe
habe ich mein LCD 4x20 mit dem PoKey zum laufen gebracht.
Ich schaffe es auch Zeichen auszugeben, hätte da an die Profis aber noch Fragen.
Im Moment lasse ich mir die Anzahl der Mails,
die Anwesenheit der Personen samt Namen und den Regenstatus anzeigen.

Probleme macht mir im Moment die Temperatur Anzeige.
Da weiß ich einfach nicht wie ich wie ich das lösen soll,
da ich nur einzelne Zeichen senden kann und keinen String.

Wie zerlege ich also sinnvoll den Temperatur Wert,
um ihn an das Display zu senden.
Ich könnte zwar eine switch case Lösung benutzen
aber die wäre ja etwas lang und ich glaube,
das das nicht die beste Lösung ist.

Vielleicht kann mir da jemand auf die Sprünge helfen.

OT, aber wie holst du die Anwesenheit deiner Jungs?

Im Moment noch über einen RFID Transponder.
Später werden die beiden auch einen AKM bekommen.

Ich bin zwar kein PHP-Kenner, kann aber goggeln:

<? 
$text = 'dies ist ein test'; 
$textlaenge = strlen($text); 

for($i=0; $i<$textlaenge; $i++) { 
 $textarray[$i] = $text{$i}; 
} 

print_r($textarray); 
?> 
// oder so:
<?php 
$str_text = "dies ist ein test"; 
$arr = explode(' ',$str_text); 

print_r ($arr); 
?>


Aus dem Array kannst Du, glaube ich, mit $textarray[0] , $textarray[1] , $textarray[3] die Zeichen einzeln verwerten.

Gruß Helmut

Hallo Helmut, wenn man weiß wonach man suchen soll:D
Aber ich glaube mit der Lösung habe ich mir ein weiteres Problem.
Meine Vermutung:
Steht vor dem Komma ein einstelliger Wert oder zweistelliger Wert.
Bei einem einstelligen Wert ist das Komma im Array[1]
aber in einem zweistelligen Wert im Array[2].
Oder denke ich da falsch.

Mit der Kombination aus beiden komme ich wahrscheinlich zum Ziel.
Versuch mich mal daran.

Habe es hinbekommen. nicht schön aber funktioniert.
Vielleicht hilft es ja jemanden.

<?
$frost = GetValue(40524 /*[Skripts\DB\klima_tanken_db\frost]*/ );
$str_text = GetValue(57704 /*[Klima\Temp\Temp AW\Außen West]*/ );
$arr = explode('.',$str_text);

$arr[0] = sprintf ("%02d", $arr[0]);
$text = strrev($arr[0]);
$textlaenge = strlen($text);

	for($i=0; $i<$textlaenge; $i++) {
	 $textarray[$i] = $text{$i};
	}

	SetValue (13226 /*[Geräte\PoKey\PoKey55E\Temp\Tv1]*/ ,$textarray[0]);
	SetValue (54401 /*[Geräte\PoKey\PoKey55E\Temp\Tv2]*/ ,$textarray[1]);
	if($frost == true){SetValue (59348 /*[Geräte\PoKey\PoKey55E\Temp\Tv3]*/ ,"-");}
	if($frost == false){SetValue (59348 /*[Geräte\PoKey\PoKey55E\Temp\Tv3]*/ ," ");}


$text1 = $arr[1];
$textlaenge1 = strlen($text1);

	for($i=0; $i<$textlaenge1; $i++) {
	 $textarray1[$i] = $text1{$i};
	}

	SetValue (20593 /*[Geräte\PoKey\PoKey55E\Temp\Th1]*/ ,$textarray1[0]);
?>

So schreibe ich es auf das Display:

<?

include "31409.ips.php"; //*lcd_master]

$t_h = GetValue(20593 /*[Geräte\PoKey\PoKey55E\Temp\Th1]*/ );
$t_v1 = GetValue(13226 /*[Geräte\PoKey\PoKey55E\Temp\Tv1]*/ );
$t_v2 = GetValue(54401 /*[Geräte\PoKey\PoKey55E\Temp\Tv2]*/ );
$t_v3 = GetValue(59348 /*[Geräte\PoKey\PoKey55E\Temp\Tv3]*/ );

switch($t_h)
	{
  case 0:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 30");
  break;
  case 1:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 31");
  break;
  case 2:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 32");
  break;
  case 3:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 33");
  break;
  case 4:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 34");
  break;
  case 5:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 35");
  break;
  case 6:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 36");
  break;
  case 7:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 37");
  break;
  case 8:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 38");
  break;
  case 9:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 22 00 39");
  break;
	}

switch($t_v1)
	{
  case 0:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 30");
  break;
  case 1:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 31");
  break;
  case 2:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 32");
  break;
  case 3:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 33");
  break;
  case 4:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 34");
  break;
  case 5:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 35");
  break;
  case 6:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 36");
  break;
  case 7:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 37");
  break;
  case 8:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 38");
  break;
  case 9:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 20 00 39");
  break;
	}
	
  switch($t_v2)
	{
  case 0:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 00");
  break;
  case 1:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 31");
  break;
  case 2:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 32");
  break;
  case 3:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 33");
  break;
  case 4:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 34");
  break;
  case 5:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 35");
  break;
  case 6:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 36");
  break;
  case 7:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 37");
  break;
  case 8:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 38");
  break;
  case 9:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1F 00 39");
  break;
	}
	
  switch($t_v3)
	{
  case true:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1E 00 00");
  break;
  case false:
  modbus_send($RegisterVariable_ID, "DD 01 00 00 00 05 01 06 02 1E 00 2D");
  break;
  }
?>

Hallo Marcus,
hatte es hier übersehen. Vielen Dank für die Rückmeldung.

Mache mir gerade die Platine für das Pokey56E - Hutschiene, dann probiere ich mal so ein Display aus.

Gruß Helmut

Bitte kein Problem.
Bin mittlerweile so begeistert, das ich mir noch einen 2. PoKey bestellen werde
und mir noch ein zweites Terminal für den Flur bauen werde.:smiley:

Ca. alle 5 Tage verschluckt sich die Temperatur Anzeige mal mit einer Stelle.
Ich denke das ich das mit einem ips sleep noch ausmerzen kann.
Da der Temperatur Wert sich aber eh jede Minute aktualisiert, habe ich da noch nicht weitergeforscht.

Ist wirklich ein geniales Teil.
Ich hoffe ja noch immer das der Pokey mal irgendwann ohne Abfrage die Eingänge senden kann.
Das wäre das Ultimative Feature.